Skip to content

⌨️ Navigation au Clavier & Accessibilité

ParamètreSpécification
Classe du ComposantCollapsibleCategoryRuleEntry
Interface d'Accessibiliténet.minecraft.client.gui.narration.NarratableEntry
Priorité de NarrationNarrationPriority.HOVERED
Type d'Élément NarréNarratedElementType.TITLE
Touches de BasculementGLFW_KEY_SPACE, GLFW_KEY_ENTER, GLFW_KEY_KP_ENTER
Touche pour ReplierGLFW_KEY_LEFT (Uniquement si déplié)
Touche pour DéplierGLFW_KEY_RIGHT (Uniquement si replié)
Retour SonoreSoundEvents.UI_BUTTON_CLICK (1.0F)

📖 Vue d'Ensemble

Collapsible Game Rules prend en charge la navigation complète au clavier et la synthèse vocale, permettant de parcourir et modifier toutes les règles sans utiliser la souris.


⌨️ Raccourcis Clavier

Lorsqu'un en-tête est sélectionné dans RuleList, keyPressed(KeyEvent event) gère les touches suivantes :

ToucheConstante GLFWActionConditionSon
EspaceGLFW_KEY_SPACEBasculer l'étatToujoursUI_BUTTON_CLICK
EntréeGLFW_KEY_ENTERBasculer l'étatToujoursUI_BUTTON_CLICK
Entrée Pavé NumériqueGLFW_KEY_KP_ENTERBasculer l'étatToujoursUI_BUTTON_CLICK
Flèche Gauche (←)GLFW_KEY_LEFTReplier la CatégorieSeulement si expanded == trueUI_BUTTON_CLICK
Flèche Droite (→)GLFW_KEY_RIGHTDéplier la CatégorieSeulement si expanded == falseUI_BUTTON_CLICK

⚙️ Implémentation Technique

1. Gestion des Flèches Directionnelles

Adopte le comportement habituel des arbres de répertoires des systèmes d'exploitation :

java
@Override
public boolean keyPressed(KeyEvent event) {
    int keyCode = event.key();
    if (keyCode == GLFW.GLFW_KEY_ENTER || keyCode == GLFW.GLFW_KEY_KP_ENTER || keyCode == GLFW.GLFW_KEY_SPACE) {
        this.toggleAction.run();
        Minecraft.getInstance().getSoundManager()
                .play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
        return true;
    } else if (keyCode == GLFW.GLFW_KEY_LEFT && this.expanded) {
        this.toggleAction.run();
        Minecraft.getInstance().getSoundManager()
                .play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
        return true;
    } else if (keyCode == GLFW.GLFW_KEY_RIGHT && !this.expanded) {
        this.toggleAction.run();
        Minecraft.getInstance().getSoundManager()
                .play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
        return true;
    }
    return super.keyPressed(event);
}

2. Synthèse Vocale (updateNarration)

java
@Override
public NarrationPriority narrationPriority() {
    return NarrationPriority.HOVERED;
}

@Override
public void updateNarration(NarrationElementOutput output) {
    output.add(NarratedElementType.TITLE, this.label);
}

🔗 Documentation Associée

Official documentation & web portal for Dasik Igaijinn mods.