feat(of): mac AZERTY FR keyboard support

User : "tu m'adapte pour un clavier mac azerty fr".

Sur Mac AZERTY FR, la rangée du haut sans shift donne
& é " ' ( § è ! ç à au lieu de 1234567890. Et les symboles
US ! @ # $ % (shift+1..5 QWERTY) sont injouables.

Adaptations :
- Démos 0-9 : digits 1-0 + alias chars AZERTY FR direct
    1 / &      → demo 0  AMIGA
    2 / é (0xe9) → demo 1 C64
    3 / "      → demo 2  ACID
    4 / '      → demo 3  TUNNEL
    5 / (      → demo 4  FREQ
    6 / § (0xa7) → demo 5 GLITCH
    7 / è (0xe8) → demo 6 AMBIENT
    8 / !      → demo 7  RAVE
    9 / ç (0xe7) → demo 8 MEMORY
    0 / à (0xe0) → demo 9 GREETINGS

- Démos 10-14 : F6-F10 (universels, layout-indépendants)
  remplace les anciens ! @ # $ % qui étaient inaccessibles
  ou conflictuels sur AZERTY FR Mac.

- Beat-sync toggle : * (US) ou \ (universel).

Hint clavier mis à jour pour refléter le double mapping.
This commit is contained in:
L'électron rare
2026-05-07 22:59:38 +02:00
parent c0c0d541cf
commit 574acfbba4
+27 -21
View File
@@ -1415,8 +1415,10 @@ void ofApp::drawScope4(int W, int H) {
}
// Hints clavier
ofSetColor(140, 220, 220, 180);
ofDrawBitmapString("[a z e r t y u i o p] = scenes "
"[s d f g h j k l m w x c v b n , ;] = params "
ofDrawBitmapString("[1-0 / & e \" ' ( s e ! c a] demos 0-9 "
"[F6-F10] demos 10-14 "
"[a z e r t y u i o p] scenes "
"[s d f g h j k l m / w x c v b n , ;] params "
"[UP DOWN] adjust [:] reset",
padX, rowY - 28);
if (narrativeMode_ && currentDemo_ < (int)demos_.size()) {
@@ -1550,25 +1552,29 @@ void ofApp::keyPressed(int key) {
// Touches 1..9 + 0 — lance une démoparty narrative complète.
// 'q' reste libre pour le mode live (pas de scénario auto).
switch (key) {
case '1': launchDemo(0); break; // AMIGA TRIBUTE
case '2': launchDemo(1); break; // C64 LOWLIFE
case '3': launchDemo(2); break; // ACID JOURNEY
case '4': launchDemo(3); break; // TUNNEL VISION
case '5': launchDemo(4); break; // FREQUENCIES
case '6': launchDemo(5); break; // GLITCH WORLD
case '7': launchDemo(6); break; // AMBIENT VOID
case '8': launchDemo(7); break; // RAVE
case '9': launchDemo(8); break; // MEMORY LANE
case '0': launchDemo(9); break; // GREETINGS
// Demos 11..15 — symboles. Shift+1..5 sur US (! @ # $ %),
// ou les chars correspondants sur AZERTY FR.
case '!': launchDemo(10); break; // FRACTAL DREAMS
case '@': launchDemo(11); break; // INFERNO
case '#': launchDemo(12); break; // OUTRUN
case '$': launchDemo(13); break; // CUBE STORM
case '%': launchDemo(14); break; // GRAND FINAL
// Beat-sync toggle : quand actif, les démos lancent au prochain kick
case '*':
// Démos 0-9 : digits (avec shift sur Mac AZERTY FR) + chars
// AZERTY FR direct (sans shift) en alias.
case '1': case '&': launchDemo(0); break; // AMIGA TRIBUTE
case '2': case 0xe9: launchDemo(1); break; // C64 (é)
case '3': case '"': launchDemo(2); break; // ACID
case '4': case '\'':launchDemo(3); break; // TUNNEL
case '5': case '(': launchDemo(4); break; // FREQ
case '6': case 0xa7: launchDemo(5); break; // GLITCH (§)
case '7': case 0xe8: launchDemo(6); break; // AMBIENT (è)
// 8 sans shift = '!' sur AZERTY FR Mac → conflit ancien demo 10
case '8': launchDemo(7); break; // RAVE
case '9': case 0xe7: launchDemo(8); break; // MEMORY (ç)
case '0': case 0xe0: launchDemo(9); break; // GREETINGS (à)
// Démos 10-14 : F6-F10 (universels, indépendants du layout).
case OF_KEY_F6: launchDemo(10); break; // FRACTAL DREAMS
case OF_KEY_F7: launchDemo(11); break; // INFERNO
case OF_KEY_F8: launchDemo(12); break; // OUTRUN
case OF_KEY_F9: launchDemo(13); break; // CUBE STORM
case OF_KEY_F10: launchDemo(14); break; // GRAND FINAL
// '!' aussi pour AZERTY FR Mac (8 sans shift) -> demo 7 RAVE.
case '!': launchDemo(7); break;
// Beat-sync toggle. '*' (US) ou '\' (universel).
case '*': case '\\':
beatSyncEnabled_ = !beatSyncEnabled_;
if (!beatSyncEnabled_) pendingDemoIdx_ = -1;
ofLogNotice("ofApp") << "beatSync " << (beatSyncEnabled_ ? "ON" : "OFF");