Skip to content

⌨️ Tastaturnavigation & Barrierefreiheit

ParameterSpezifikation
KomponentenklasseCollapsibleCategoryRuleEntry
Barrierefreiheits-Schnittstellenet.minecraft.client.gui.narration.NarratableEntry
Sprachausgabe-PrioritätNarrationPriority.HOVERED
Elementtyp der SprachausgabeNarratedElementType.TITLE
UmschalttastenGLFW_KEY_SPACE, GLFW_KEY_ENTER, GLFW_KEY_KP_ENTER
Taste zum EinklappenGLFW_KEY_LEFT (Nur wenn Kategorie ausgeklappt ist)
Taste zum AusklappenGLFW_KEY_RIGHT (Nur wenn Kategorie eingeklappt ist)
Akustisches FeedbackSoundEvents.UI_BUTTON_CLICK (1.0F)

📖 Übersicht

Collapsible Game Rules unterstützt vollständige Tastatursteuerung und Screenreader-Ausgabe, damit Menüs komplett ohne Maus bedient werden können.


⌨️ Tastenbelegung

Wenn ein Kategorie-Header in RuleList fokussiert ist, verarbeitet keyPressed(KeyEvent event) folgende Tasten:

TasteGLFW-KonstanteAktionBedingungSound
LeertasteGLFW_KEY_SPACEZustand umschaltenImmerUI_BUTTON_CLICK
Eingabetaste (Enter)GLFW_KEY_ENTERZustand umschaltenImmerUI_BUTTON_CLICK
Ziffernblock-EnterGLFW_KEY_KP_ENTERZustand umschaltenImmerUI_BUTTON_CLICK
Pfeiltaste links (←)GLFW_KEY_LEFTKategorie einklappenNur wenn expanded == trueUI_BUTTON_CLICK
Pfeiltaste rechts (→)GLFW_KEY_RIGHTKategorie ausklappenNur wenn expanded == falseUI_BUTTON_CLICK

⚙️ Technische Implementierung

1. Auswertung der Pfeiltasten

Entspricht Standard-Hierarchiebäumen moderner Betriebssysteme:

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. Barrierefreie Sprachausgabe (updateNarration)

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

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

🔗 Weiterführende Dokumentation

Official documentation & web portal for Dasik Igaijinn mods.