Guide

Nouvelles mises à jour et améliorations de Roundfleet.

Avis important

Les exemples de code et scripts fournis dans ces tutoriels sont uniquement à des fins éducatives. Roundfleet n'est pas responsable des problèmes, dommages ou vulnérabilités de sécurité qui pourraient survenir lors de l'utilisation, modification ou implémentation de ces exemples. Toujours vérifier et tester le code dans un environnement sécurisé avant de l'utiliser dans des systèmes de production.

Configuration des paramètres de clavier sur les appareils Mac

La gestion cohérente des paramètres de clavier sur une flotte Mac est essentielle pour maintenir des standards de productivité et d'expérience utilisateur. Ce guide complet fournit des scripts shell et des techniques pour configurer divers paramètres de clavier sur les appareils macOS, incluant les taux de répétition des touches, les délais, la navigation au clavier et les fonctionnalités de correction automatique.

Comprendre les paramètres de clavier Mac

macOS propose plusieurs options de configuration de clavier qui peuvent considérablement impacter la productivité et le confort des utilisateurs :

Taux de répétition des touches

La vitesse à laquelle un caractère est répété quand une touche est maintenue enfoncée. Un taux plus élevé signifie une répétition plus rapide des caractères.

Délai avant répétition

Le temps que le clavier attend avant de commencer à répéter une touche maintenue enfoncée. Un délai plus court signifie que la répétition commence plus tôt.

Navigation au clavier

Permet aux utilisateurs de naviguer dans les éléments d'interface en utilisant le clavier au lieu des clics de souris, améliorant l'accessibilité et l'efficacité du flux de travail.

Correction automatique

Corrige automatiquement les mots mal orthographiés pendant la frappe, ce qui peut être utile ou perturbant selon les préférences utilisateur et les cas d'usage.

Prérequis

Avant de configurer les paramètres de clavier, assurez-vous d'avoir :

  • Privilèges administrateur sur le Mac
  • Accès Terminal ou SSH
  • Compréhension des exigences de contexte utilisateur
  • Sauvegarde des paramètres actuels (recommandé)

Commandes de base de configuration de clavier

Comprendre les outils de configuration

Les paramètres de clavier Mac sont gérés via plusieurs composants système :

  • defaults : Interface en ligne de commande au système de valeurs par défaut utilisateur
  • launchctl : Interface vers launchd pour exécuter des commandes dans le contexte utilisateur
  • NSGlobalDomain : Domaine pour les paramètres système globaux
  • Contexte utilisateur : Les paramètres doivent être appliqués dans la session utilisateur correcte

Détection de l'utilisateur actuel

La plupart des paramètres de clavier requièrent un contexte utilisateur. Voici comment détecter l'utilisateur actuel :

#!/bin/bash

# Obtenir l'utilisateur de console actuel
get_current_user() {
    local current_user=$(ls -l /dev/console | awk '/ / { print $3 }')
    echo "$current_user"
}

# Obtenir l'ID utilisateur
get_user_id() {
    local username=$1
    local user_id=$(id -u "$username")
    echo "$user_id"
}

# Exemple d'utilisation
current_user=$(get_current_user)
user_id=$(get_user_id "$current_user")

echo "Utilisateur actuel: $current_user"
echo "ID utilisateur: $user_id"

Configuration du taux de répétition des touches

Script de base pour le taux de répétition

Configurer la vitesse de répétition des touches :

#!/bin/bash

# Configurer le taux de répétition des touches
# Valeurs: 1-15 (1 = plus rapide, 15 = plus lent)
KEY_REPEAT_RATE=2

echo "Configuration du taux de répétition des touches à: $KEY_REPEAT_RATE"

# Obtenir l'utilisateur actuel et son ID
CurrentUser=$(ls -l /dev/console | awk '/ / { print $3 }')
CurrentUserUID=$(id -u "$CurrentUser")

# Appliquer le paramètre dans le contexte utilisateur
if launchctl asuser $CurrentUserUID sudo -iu "$CurrentUser" defaults write -g KeyRepeat -int $KEY_REPEAT_RATE; then
    echo "✓ Taux de répétition des touches défini avec succès"
else
    echo "✗ Échec de la définition du taux de répétition des touches"
    exit 1
fi

echo "Les changements prendront effet après déconnexion/reconnexion de l'utilisateur"

Script avancé de taux de répétition

Script plus complet avec validation et journalisation :

#!/bin/bash

# Script avancé de configuration du taux de répétition des touches
LOG_FILE="/var/log/keyboard_settings.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

# Fonction pour enregistrer les messages
log_message() {
    echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE"
}

# Fonction pour valider le taux de répétition
validate_key_repeat_rate() {
    local rate=$1
    
    if [[ ! "$rate" =~ ^[0-9]+$ ]]; then
        log_message "ERREUR: Le taux de répétition doit être un nombre"
        return 1
    fi
    
    if [ "$rate" -lt 1 ] || [ "$rate" -gt 15 ]; then
        log_message "ERREUR: Le taux de répétition doit être entre 1-15"
        return 1
    fi
    
    return 0
}

# Fonction pour obtenir le taux de répétition actuel
get_current_key_repeat_rate() {
    local current_user=$1
    local current_uid=$2
    
    local current_rate=$(launchctl asuser $current_uid sudo -iu "$current_user" defaults read -g KeyRepeat 2>/dev/null)
    
    if [ -n "$current_rate" ]; then
        echo "$current_rate"
    else
        echo "Non défini"
    fi
}

# Fonction pour définir le taux de répétition
set_key_repeat_rate() {
    local rate=$1
    local current_user=$2
    local current_uid=$3
    
    log_message "Définition du taux de répétition à: $rate pour l'utilisateur: $current_user"
    
    # Obtenir le paramètre actuel
    local current_rate=$(get_current_key_repeat_rate "$current_user" "$current_uid")
    log_message "Taux de répétition actuel: $current_rate"
    
    # Appliquer le nouveau paramètre
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write -g KeyRepeat -int $rate; then
        log_message "SUCCÈS: Taux de répétition défini à $rate"
        
        # Vérifier le paramètre
        local new_rate=$(get_current_key_repeat_rate "$current_user" "$current_uid")
        log_message "Nouveau taux de répétition vérifié: $new_rate"
        
        return 0
    else
        log_message "ERREUR: Échec de la définition du taux de répétition"
        return 1
    fi
}

# Exécution principale
KEY_REPEAT_RATE=${1:-2}  # Par défaut à 2 si non spécifié

log_message "Début de la configuration du taux de répétition"

# Valider l'entrée
if ! validate_key_repeat_rate "$KEY_REPEAT_RATE"; then
    log_message "Taux de répétition invalide: $KEY_REPEAT_RATE"
    exit 1
fi

# Obtenir l'utilisateur actuel
CurrentUser=$(ls -l /dev/console | awk '/ / { print $3 }')
CurrentUserUID=$(id -u "$CurrentUser")

if [ -z "$CurrentUser" ] || [ "$CurrentUser" = "root" ]; then
    log_message "ERREUR: Aucune session utilisateur valide trouvée"
    exit 1
fi

log_message "Utilisateur actuel: $CurrentUser (UID: $CurrentUserUID)"

# Définir le taux de répétition
if set_key_repeat_rate "$KEY_REPEAT_RATE" "$CurrentUser" "$CurrentUserUID"; then
    log_message "Configuration du taux de répétition terminée avec succès"
else
    log_message "Configuration du taux de répétition échouée"
    exit 1
fi

log_message "Note: Les changements prendront effet après déconnexion/reconnexion de l'utilisateur"

Configuration du délai avant répétition

Script de base pour le délai

Configurer le délai avant que la répétition des touches commence :

#!/bin/bash

# Configurer le délai avant répétition
# Valeurs: 0-3 (0 = délai le plus court, 3 = délai le plus long)
KEY_DELAY=1

echo "Configuration du délai avant répétition à: $KEY_DELAY"

# Obtenir l'utilisateur actuel et son ID
CurrentUser=$(ls -l /dev/console | awk '/ / { print $3 }')
CurrentUserUID=$(id -u "$CurrentUser")

# Appliquer le paramètre dans le contexte utilisateur
if launchctl asuser $CurrentUserUID sudo -iu "$CurrentUser" defaults write -g InitialKeyRepeat -int $KEY_DELAY; then
    echo "✓ Délai avant répétition défini avec succès"
else
    echo "✗ Échec de la définition du délai avant répétition"
    exit 1
fi

echo "Les changements prendront effet après déconnexion/reconnexion de l'utilisateur"

Script avancé de configuration du délai

Script complet avec validation et support multi-utilisateur :

#!/bin/bash

# Script avancé de configuration du délai avant répétition
LOG_FILE="/var/log/keyboard_settings.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

# Fonction pour enregistrer les messages
log_message() {
    echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE"
}

# Fonction pour valider la valeur du délai
validate_delay() {
    local delay=$1
    
    if [[ ! "$delay" =~ ^[0-9]+$ ]]; then
        log_message "ERREUR: Le délai doit être un nombre"
        return 1
    fi
    
    if [ "$delay" -lt 0 ] || [ "$delay" -gt 3 ]; then
        log_message "ERREUR: Le délai doit être entre 0-3"
        return 1
    fi
    
    return 0
}

# Fonction pour obtenir le paramètre de délai actuel
get_current_delay() {
    local current_user=$1
    local current_uid=$2
    
    local current_delay=$(launchctl asuser $current_uid sudo -iu "$current_user" defaults read -g InitialKeyRepeat 2>/dev/null)
    
    if [ -n "$current_delay" ]; then
        echo "$current_delay"
    else
        echo "Non défini"
    fi
}

# Fonction pour définir le délai avant répétition
set_delay_until_repeat() {
    local delay=$1
    local current_user=$2
    local current_uid=$3
    
    log_message "Définition du délai avant répétition à: $delay pour l'utilisateur: $current_user"
    
    # Obtenir le paramètre actuel
    local current_delay=$(get_current_delay "$current_user" "$current_uid")
    log_message "Délai avant répétition actuel: $current_delay"
    
    # Appliquer le nouveau paramètre
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write -g InitialKeyRepeat -int $delay; then
        log_message "SUCCÈS: Délai avant répétition défini à $delay"
        
        # Vérifier le paramètre
        local new_delay=$(get_current_delay "$current_user" "$current_uid")
        log_message "Nouveau délai avant répétition vérifié: $new_delay"
        
        return 0
    else
        log_message "ERREUR: Échec de la définition du délai avant répétition"
        return 1
    fi
}

# Exécution principale
KEY_DELAY=${1:-1}  # Par défaut à 1 si non spécifié

log_message "Début de la configuration du délai avant répétition"

# Valider l'entrée
if ! validate_delay "$KEY_DELAY"; then
    log_message "Valeur de délai invalide: $KEY_DELAY"
    exit 1
fi

# Obtenir l'utilisateur actuel
CurrentUser=$(ls -l /dev/console | awk '/ / { print $3 }')
CurrentUserUID=$(id -u "$CurrentUser")

if [ -z "$CurrentUser" ] || [ "$CurrentUser" = "root" ]; then
    log_message "ERREUR: Aucune session utilisateur valide trouvée"
    exit 1
fi

log_message "Utilisateur actuel: $CurrentUser (UID: $CurrentUserUID)"

# Définir le délai avant répétition
if set_delay_until_repeat "$KEY_DELAY" "$CurrentUser" "$CurrentUserUID"; then
    log_message "Configuration du délai avant répétition terminée avec succès"
else
    log_message "Configuration du délai avant répétition échouée"
    exit 1
fi

log_message "Note: Les changements prendront effet après déconnexion/reconnexion de l'utilisateur"

Configuration de la navigation au clavier

Script de base pour la navigation au clavier

Activer la navigation au clavier pour une meilleure accessibilité :

#!/bin/bash

# Activer la navigation au clavier
echo "Activation de la navigation au clavier..."

# Obtenir l'utilisateur actuel et son ID
CurrentUser=$(ls -l /dev/console | awk '/ / { print $3 }')
CurrentUserUID=$(id -u "$CurrentUser")

# Activer la navigation au clavier (3 = accès clavier complet)
if launchctl asuser $CurrentUserUID sudo -iu "$CurrentUser" defaults write NSGlobalDomain AppleKeyboardUIMode -int 3; then
    echo "✓ Navigation au clavier activée avec succès"
else
    echo "✗ Échec de l'activation de la navigation au clavier"
    exit 1
fi

echo "La navigation au clavier est maintenant activée"
echo "Note: Cette fonctionnalité requiert macOS 13.0 ou ultérieur"

Script avancé de navigation au clavier

Script complet avec vérification de version et options de configuration :

#!/bin/bash

# Script avancé de configuration de la navigation au clavier
LOG_FILE="/var/log/keyboard_settings.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

# Fonction pour enregistrer les messages
log_message() {
    echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE"
}

# Fonction pour vérifier la version macOS
check_macos_version() {
    local version=$(sw_vers -productVersion)
    local major_version=$(echo "$version" | cut -d. -f1)
    
    log_message "Version macOS: $version"
    
    if [ "$major_version" -ge 13 ]; then
        log_message "La version macOS est compatible avec la navigation au clavier"
        return 0
    else
        log_message "AVERTISSEMENT: La version macOS peut ne pas supporter complètement la navigation au clavier"
        return 1
    fi
}

# Fonction pour obtenir le statut de navigation au clavier actuel
get_keyboard_navigation_status() {
    local current_user=$1
    local current_uid=$2
    
    local current_setting=$(launchctl asuser $current_uid sudo -iu "$current_user" defaults read NSGlobalDomain AppleKeyboardUIMode 2>/dev/null)
    
    if [ -n "$current_setting" ]; then
        case "$current_setting" in
            0) echo "Désactivé (zones de texte et listes seulement)" ;;
            1) echo "Activé (zones de texte et listes seulement)" ;;
            2) echo "Activé (contrôles quand la touche Tab est pressée)" ;;
            3) echo "Activé (tous les contrôles)" ;;
            *) echo "Inconnu ($current_setting)" ;;
        esac
    else
        echo "Non défini (par défaut)"
    fi
}

# Fonction pour définir la navigation au clavier
set_keyboard_navigation() {
    local mode=$1
    local current_user=$2
    local current_uid=$3
    
    log_message "Définition du mode de navigation au clavier à: $mode pour l'utilisateur: $current_user"
    
    # Obtenir le paramètre actuel
    local current_status=$(get_keyboard_navigation_status "$current_user" "$current_uid")
    log_message "Navigation au clavier actuelle: $current_status"
    
    # Appliquer le nouveau paramètre
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain AppleKeyboardUIMode -int $mode; then
        log_message "SUCCÈS: Navigation au clavier définie au mode $mode"
        
        # Vérifier le paramètre
        local new_status=$(get_keyboard_navigation_status "$current_user" "$current_uid")
        log_message "Nouvelle navigation au clavier vérifiée: $new_status"
        
        return 0
    else
        log_message "ERREUR: Échec de la définition de la navigation au clavier"
        return 1
    fi
}

# Exécution principale
KEYBOARD_MODE=${1:-3}  # Par défaut à 3 (accès clavier complet) si non spécifié

log_message "Début de la configuration de la navigation au clavier"

# Vérifier la version macOS
check_macos_version

# Valider le mode
if [[ ! "$KEYBOARD_MODE" =~ ^[0-3]$ ]]; then
    log_message "ERREUR: Mode clavier invalide: $KEYBOARD_MODE (doit être 0-3)"
    exit 1
fi

# Obtenir l'utilisateur actuel
CurrentUser=$(ls -l /dev/console | awk '/ / { print $3 }')
CurrentUserUID=$(id -u "$CurrentUser")

if [ -z "$CurrentUser" ] || [ "$CurrentUser" = "root" ]; then
    log_message "ERREUR: Aucune session utilisateur valide trouvée"
    exit 1
fi

log_message "Utilisateur actuel: $CurrentUser (UID: $CurrentUserUID)"

# Définir la navigation au clavier
if set_keyboard_navigation "$KEYBOARD_MODE" "$CurrentUser" "$CurrentUserUID"; then
    log_message "Configuration de la navigation au clavier terminée avec succès"
else
    log_message "Configuration de la navigation au clavier échouée"
    exit 1
fi

log_message "Navigation au clavier maintenant configurée"

Configuration de la correction automatique

Script de base pour désactiver la correction automatique

Désactiver la correction orthographique automatique :

#!/bin/bash

# Désactiver la correction automatique
echo "Désactivation de la correction automatique..."

# Obtenir l'utilisateur actuel et son ID
CurrentUser=$(ls -l /dev/console | awk '/ / { print $3 }')
CurrentUserUID=$(id -u "$CurrentUser")

# Désactiver la correction automatique
if launchctl asuser $CurrentUserUID sudo -iu "$CurrentUser" defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false; then
    echo "✓ Correction automatique désactivée avec succès"
else
    echo "✗ Échec de la désactivation de la correction automatique"
    exit 1
fi

echo "La correction automatique est maintenant désactivée"
echo "Note: Les changements prendront effet après déconnexion/reconnexion de l'utilisateur"

Script avancé de gestion de la correction automatique

Script complet pour gérer diverses fonctionnalités de correction automatique :

#!/bin/bash

# Script avancé de configuration de la correction automatique
LOG_FILE="/var/log/keyboard_settings.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

# Fonction pour enregistrer les messages
log_message() {
    echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE"
}

# Fonction pour obtenir les paramètres de correction automatique actuels
get_autocorrect_settings() {
    local current_user=$1
    local current_uid=$2
    
    log_message "Obtention des paramètres de correction automatique pour l'utilisateur: $current_user"
    
    # Correction orthographique
    local spelling_correction=$(launchctl asuser $current_uid sudo -iu "$current_user" defaults read NSGlobalDomain NSAutomaticSpellingCorrectionEnabled 2>/dev/null)
    
    # Capitalisation des mots
    local capitalize_words=$(launchctl asuser $current_uid sudo -iu "$current_user" defaults read NSGlobalDomain NSAutomaticCapitalizationEnabled 2>/dev/null)
    
    # Ajout de point avec double espace
    local period_substitution=$(launchctl asuser $current_uid sudo -iu "$current_user" defaults read NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled 2>/dev/null)
    
    # Guillemets intelligents
    local smart_quotes=$(launchctl asuser $current_uid sudo -iu "$current_user" defaults read NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled 2>/dev/null)
    
    # Tirets intelligents
    local smart_dashes=$(launchctl asuser $current_uid sudo -iu "$current_user" defaults read NSGlobalDomain NSAutomaticDashSubstitutionEnabled 2>/dev/null)
    
    echo "Paramètres de correction automatique actuels:"
    echo "  Correction orthographique: ${spelling_correction:-Non défini}"
    echo "  Capitalisation des mots: ${capitalize_words:-Non défini}"
    echo "  Substitution de point: ${period_substitution:-Non défini}"
    echo "  Guillemets intelligents: ${smart_quotes:-Non défini}"
    echo "  Tirets intelligents: ${smart_dashes:-Non défini}"
}

# Fonction pour configurer les fonctionnalités de correction automatique
configure_autocorrect() {
    local current_user=$1
    local current_uid=$2
    local spelling_correction=$3
    local capitalize_words=$4
    local period_substitution=$5
    local smart_quotes=$6
    local smart_dashes=$7
    
    log_message "Configuration des paramètres de correction automatique pour l'utilisateur: $current_user"
    
    local success=0
    
    # Configurer la correction orthographique
    if [ -n "$spelling_correction" ]; then
        if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool $spelling_correction; then
            log_message "SUCCÈS: Correction orthographique définie à $spelling_correction"
        else
            log_message "ERREUR: Échec de la définition de la correction orthographique"
            success=1
        fi
    fi
    
    # Configurer la capitalisation des mots
    if [ -n "$capitalize_words" ]; then
        if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool $capitalize_words; then
            log_message "SUCCÈS: Capitalisation des mots définie à $capitalize_words"
        else
            log_message "ERREUR: Échec de la définition de la capitalisation des mots"
            success=1
        fi
    fi
    
    # Configurer la substitution de point
    if [ -n "$period_substitution" ]; then
        if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool $period_substitution; then
            log_message "SUCCÈS: Substitution de point définie à $period_substitution"
        else
            log_message "ERREUR: Échec de la définition de la substitution de point"
            success=1
        fi
    fi
    
    # Configurer les guillemets intelligents
    if [ -n "$smart_quotes" ]; then
        if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool $smart_quotes; then
            log_message "SUCCÈS: Guillemets intelligents définis à $smart_quotes"
        else
            log_message "ERREUR: Échec de la définition des guillemets intelligents"
            success=1
        fi
    fi
    
    # Configurer les tirets intelligents
    if [ -n "$smart_dashes" ]; then
        if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool $smart_dashes; then
            log_message "SUCCÈS: Tirets intelligents définis à $smart_dashes"
        else
            log_message "ERREUR: Échec de la définition des tirets intelligents"
            success=1
        fi
    fi
    
    return $success
}

# Exécution principale
log_message "Début de la configuration de la correction automatique"

# Options de configuration (modifier selon les besoins)
SPELLING_CORRECTION=${1:-false}
CAPITALIZE_WORDS=${2:-false}
PERIOD_SUBSTITUTION=${3:-false}
SMART_QUOTES=${4:-false}
SMART_DASHES=${5:-false}

# Obtenir l'utilisateur actuel
CurrentUser=$(ls -l /dev/console | awk '/ / { print $3 }')
CurrentUserUID=$(id -u "$CurrentUser")

if [ -z "$CurrentUser" ] || [ "$CurrentUser" = "root" ]; then
    log_message "ERREUR: Aucune session utilisateur valide trouvée"
    exit 1
fi

log_message "Utilisateur actuel: $CurrentUser (UID: $CurrentUserUID)"

# Afficher les paramètres actuels
get_autocorrect_settings "$CurrentUser" "$CurrentUserUID"

# Configurer la correction automatique
if configure_autocorrect "$CurrentUser" "$CurrentUserUID" "$SPELLING_CORRECTION" "$CAPITALIZE_WORDS" "$PERIOD_SUBSTITUTION" "$SMART_QUOTES" "$SMART_DASHES"; then
    log_message "Configuration de la correction automatique terminée avec succès"
else
    log_message "Certaines configurations de correction automatique ont échoué"
    exit 1
fi

log_message "Note: Les changements prendront effet après déconnexion/reconnexion de l'utilisateur"

Configuration complète du clavier

Script de configuration tout-en-un

Script pour configurer tous les paramètres de clavier en une fois :

#!/bin/bash

# Script de configuration complète du clavier
LOG_FILE="/var/log/keyboard_settings.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

# Variables de configuration
KEY_REPEAT_RATE=2
KEY_DELAY=1
KEYBOARD_NAVIGATION=3
DISABLE_AUTOCORRECT=true
DISABLE_CAPITALIZE=true
DISABLE_PERIOD_SUB=true
DISABLE_SMART_QUOTES=true
DISABLE_SMART_DASHES=true

# Fonction pour enregistrer les messages
log_message() {
    echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE"
}

# Fonction pour appliquer tous les paramètres de clavier
apply_keyboard_settings() {
    local current_user=$1
    local current_uid=$2
    
    log_message "Application des paramètres de clavier complets pour l'utilisateur: $current_user"
    
    local success=0
    
    # Taux de répétition des touches
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write -g KeyRepeat -int $KEY_REPEAT_RATE; then
        log_message "SUCCÈS: Taux de répétition défini à $KEY_REPEAT_RATE"
    else
        log_message "ERREUR: Échec de la définition du taux de répétition"
        success=1
    fi
    
    # Délai avant répétition
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write -g InitialKeyRepeat -int $KEY_DELAY; then
        log_message "SUCCÈS: Délai avant répétition défini à $KEY_DELAY"
    else
        log_message "ERREUR: Échec de la définition du délai avant répétition"
        success=1
    fi
    
    # Navigation au clavier
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain AppleKeyboardUIMode -int $KEYBOARD_NAVIGATION; then
        log_message "SUCCÈS: Navigation au clavier définie à $KEYBOARD_NAVIGATION"
    else
        log_message "ERREUR: Échec de la définition de la navigation au clavier"
        success=1
    fi
    
    # Fonctionnalités de correction automatique
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool $DISABLE_AUTOCORRECT; then
        log_message "SUCCÈS: Correction automatique désactivée"
    else
        log_message "ERREUR: Échec de la désactivation de la correction automatique"
        success=1
    fi
    
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool $DISABLE_CAPITALIZE; then
        log_message "SUCCÈS: Capitalisation automatique désactivée"
    else
        log_message "ERREUR: Échec de la désactivation de la capitalisation automatique"
        success=1
    fi
    
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool $DISABLE_PERIOD_SUB; then
        log_message "SUCCÈS: Substitution de point désactivée"
    else
        log_message "ERREUR: Échec de la désactivation de la substitution de point"
        success=1
    fi
    
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool $DISABLE_SMART_QUOTES; then
        log_message "SUCCÈS: Guillemets intelligents désactivés"
    else
        log_message "ERREUR: Échec de la désactivation des guillemets intelligents"
        success=1
    fi
    
    if launchctl asuser $current_uid sudo -iu "$current_user" defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool $DISABLE_SMART_DASHES; then
        log_message "SUCCÈS: Tirets intelligents désactivés"
    else
        log_message "ERREUR: Échec de la désactivation des tirets intelligents"
        success=1
    fi
    
    return $success
}

# Exécution principale
log_message "Début de la configuration complète du clavier"

# Obtenir l'utilisateur actuel
CurrentUser=$(ls -l /dev/console | awk '/ / { print $3 }')
CurrentUserUID=$(id -u "$CurrentUser")

if [ -z "$CurrentUser" ] || [ "$CurrentUser" = "root" ]; then
    log_message "ERREUR: Aucune session utilisateur valide trouvée"
    exit 1
fi

log_message "Utilisateur actuel: $CurrentUser (UID: $CurrentUserUID)"

# Appliquer tous les paramètres
if apply_keyboard_settings "$CurrentUser" "$CurrentUserUID"; then
    log_message "Configuration complète du clavier terminée avec succès"
    echo "✓ Tous les paramètres de clavier appliqués avec succès"
else
    log_message "Certaines configurations de clavier ont échoué"
    echo "⚠ Certains paramètres peuvent ne pas avoir été appliqués. Vérifiez le journal: $LOG_FILE"
    exit 1
fi

log_message "Note: Les changements prendront effet après déconnexion/reconnexion de l'utilisateur"
echo "Note: Veuillez vous déconnecter et vous reconnecter pour que les changements prennent effet"

Conclusion

La gestion efficace de la configuration du clavier est essentielle pour maintenir des expériences utilisateur cohérentes sur les flottes Mac. Les scripts et techniques fournis dans ce guide offrent des solutions complètes pour divers scénarios de configuration de clavier.

Points clés à retenir :

  • Utiliser le contexte utilisateur approprié pour l'application des paramètres
  • Implémenter une validation et une gestion d'erreurs appropriées
  • Tester les configurations avant un déploiement de masse
  • Surveiller et journaliser tous les changements de configuration
  • Considérer les préférences utilisateur et les besoins d'accessibilité

N'oubliez pas que les paramètres de clavier sont très personnels, donc considérez fournir des options permettant aux utilisateurs de personnaliser leur expérience tout en maintenant les standards d'entreprise lorsque nécessaire.

Related Tutorials

Configurer Stage Manager sur les appareils macOS

Apprenez à activer, désactiver et personnaliser les paramètres de Stage Manager sur les appareils macOS à l'aide de scripts shell pour la gestion de flotte Mac.

7 juil. 2025

Configurer Paramètres Capture d'Écran sur macOS

Changez le format, l'emplacement et les conventions de nommage des captures d'écran sur Mac avec les préférences système et commandes defaults.

7 juil. 2025

Configurer les Paramètres de Trackpad sur macOS

Apprenez à configurer les paramètres de trackpad incluant la vitesse de suivi, les options de clic, tap pour cliquer, et le verrouillage de glissement avec des scripts shell pour le déploiement entreprise.

7 juil. 2025

Gestion Entreprise des Fuseaux Horaires sur macOS

Guide complet pour la gestion des fuseaux horaires et des paramètres de date/heure en entreprise sur les appareils Roundfleet avec synchronisation automatisée, conformité géographique, application de politiques et contrôle centralisé.

7 juil. 2025

Gestion des Préférences Système sur macOS

Apprenez à masquer, désactiver et gérer les panneaux des Préférences Système sur les appareils macOS en utilisant des scripts en ligne de commande pour la configuration d'entreprise et le contrôle des restrictions utilisateur.

7 juil. 2025

Gestion d'Information Système d'Entreprise sur macOS

Collectez, analysez et gérez les informations système sur les appareils macOS avec le profilage système avancé, la collecte automatisée de données et l'analytique d'entreprise pour l'inventaire et la surveillance complète des appareils.

7 juil. 2025

Gérer les panneaux de réglages système sur macOS

Apprenez à désactiver, masquer et gérer les panneaux de réglages système sur macOS Ventura et versions ultérieures en utilisant des scripts en ligne de commande pour un contrôle de sécurité d'entreprise renforcé.

7 juil. 2025

Gestion de la Luminosité d'Écran et Optimisation Énergétique sur macOS

Apprenez à contrôler la luminosité de l'écran, implémenter des politiques d'éclairage adaptatif, gérer la consommation d'énergie et optimiser les paramètres d'affichage sur les appareils macOS pour la gestion de flotte d'entreprise.

7 juil. 2025