jpcima / ADLplug

FM Chip Synthesizer — OPL & OPN — VST/LV2/Standalone
Boost Software License 1.0
425 stars 22 forks source link

AZERTY keyboard #19

Closed jpcima closed 5 years ago

jpcima commented 5 years ago

On request of @trebmuh

Allow setting up the MIDI keyboard to respond to key presses using the french keymap.

jpcima commented 5 years ago

dis @trebmuh, tu es certain que l'azerty ne fonctionne pas ? de mon côté, ça correspond aux mêmes touches physiques quel que soit l'agencement.

En principe, le clavier visuel est fait pour utiliser par défaut cet ensemble de touches. clavier-midi

Vérifie si tu veux bien, dis moi si c'est bien ça.

trebmuh commented 5 years ago

@jpcima ici, ça répond à ça :

kb_france

jpcima commented 5 years ago

C'est bon pour le clavier AZERTY. Désormais, il existe un bouton permettant de choisir la disposition de clavier. À tester

trebmuh commented 5 years ago

@jpcima testé, ça fonctionne super.

jpcima commented 5 years ago

C'est une chose, ensuite ça peut s'améliorer.

jpcima commented 5 years ago

On peut maintenant utiliser un fichier de configuration, qui sera écrit chez l'utilisateur soit au premier lancement, mais peut être également récupéré à partir du dossier système.

Si tout va bien les emplacements sont

trebmuh commented 5 years ago

Ça fonctionne super. Merci.

Remarque sur la sélection du clavier alphanumérique: lorsque l'on affiche les choix de claviers alphanumériques, on a ça :

adlplug-choix-clavier-alphanumerique

Suggestion est de mettre une marque sur le modèle actuellement sélectionné :

adlplug-choix-clavier-alphanumerique2

Ce qui permettra à l'utilisateur de savoir quel est le modèle qu'il utilise.

jpcima commented 5 years ago

C'est implémenté.

trebmuh commented 5 years ago

Testé fonctionnel, nickel ! Merci.

trebmuh commented 5 years ago

@jpcima tu fermes même si https://github.com/jpcima/ADLplug/issues/19#issuecomment-422524279 n'est pas complété ?

jpcima commented 5 years ago

Trouves-tu cela important d'avoir accès à ces fonctionnalités sur le greffon directement ? On peut connecter vmpk et c'est aussi bien.

Les correspondance de touches peuvent être éditées dans la configuration. Si tu voudrais avoir une key-map différente, je te laisse libre de proposer une modification si tel est le cas.

https://github.com/jpcima/ADLplug/blob/ce72746e2d559ffd9841b69e476006bc3f825cd7/sources/ui/utility/key_maps.cc#L11-L18

trebmuh commented 5 years ago

La fonctionnalité que je trouvais intéressante dans ta liste est celle-ci :

avoir une correspondance de touches utilisant les 4 rangées du clavier

Les correspondance de touches peuvent être éditées dans la configuration. Si tu voudrais avoir une key-map différente, je te laisse libre de proposer une modification si tel est le cas.

Tu veux dire qu'en modifiant ce fichier, je pourrais obtenir un agencement du clavier sur 4 lignes comme dans Carla ? de ce style :

azerty

jpcima commented 5 years ago

D'ores-et-déjภcela est modifiable dans le fichier de conf utilisateur. Si tu veux je code un agencement différent en dur. Je dois pouvoir recopier celui de Carla.

jpcima commented 5 years ago

Problème : les touches accentuées ne passent pas, car j'ai oublié de traiter ça en Unicode. Je corrige.

jpcima commented 5 years ago

C'est corrigé. J'ai intégré des agencements qui correspondent à ceux de Carla. Par la même occasion, j'ai ajouté le clavier QWERTZ.

trebmuh commented 5 years ago

Super de pouvoir utiliser 4 lignes au lieu de 2. Merci ! :+1:

Petite fioriture, si un utilisateur avait précédemment enregistré un fichier ini dans son home/user/config/..., alors il n'a pas accès aux nouveaux agencements. C'est à dire que les agencements AZERTY et QWERTY sont toujours sur 2 lignes, et que l'agencement QWERTZ n'existe pas.

Le contournement facile est de supprimer les fichiers ini du home, et au prochain lancement, ADL/OPL-plug le recréera.

Ceci dit, est-ce possible que ADLplug/OPNplug vérifie les fichiers utilisateur à son lancement et propose de mettre à jour les définitions des agencements de clavier dans le fichier INI user ? Si c'est pas trop compliqué à faire, ça serait chouette, surtout que ça sera probablement réutilisable le jour où des utilisateurs proposeront des définitions pour les agencements DVORAK/BEPO/...

jpcima commented 5 years ago

Tu as raison. Je pense à une stratégie de ce type là :

J'introduis dans la conf un numéro de version, en l'occurence ce sera la 2. Si la conf système, ou à défaut la configuration interne, présente une numéro de version supérieur à la version utilisateur, on écrase la version utilisateur.

OK ?

EDIT:

bépo

Si ma mémoire est bonne, cet agencement à un accent circonflexe en plein milieu, et cette frappe de touche ne passe pas malheureusement.

trebmuh commented 5 years ago

Si la conf système, ou à défaut la configuration interne, présente une numéro de version supérieur à la version utilisateur, on écrase la version utilisateur.

Ça me semble pas mal. Ceci dit, après avoir écrit le message précédent, je me suis dit :+1:

OK, mais qu'est-ce qui se passe si un utilisateur a modifié son agencement clavier dans son home ?

Et du coup, si tu peux mettre une fenêtre surgissante montrant le fichier avant, et le fichier que la mise à jour propose, avec une demande de validation de la part de l'utilisateur, ça me semblerait prompt à éviter des utilisateurs tristes ou en colère.

Ça te semble logique ?

jpcima commented 5 years ago

Ok, plan B. On garde le système de versions. Le logiciel définit des transitions de version 1 à 2, et 2 à 3 et ainsi de suite.

Si l'utilisateur à une conf V1, je vais la mettre à jour successivement à V2, V3 .... Vn. Si la clé de configuration "Toto" a la même valeur que TotoV1 je la passe en TotoV2 ; sinon, je ne change rien (cette valeur avait été modifiée par l'utilisateur).

OK ?

jpcima commented 5 years ago

En vérité c'est un peu compliqué, lorsqu'il faut tenir compte de la conf système. Alors, j'implémente pour l'instant pour la 3ème des 2 options, hein.

Je mets la nouvelle conf et je fais une sauvegarde de la conf précédente. Par exemple si c'était une conf en V1, le fichier s'appellera ADLplug.ini.bak1. Remarque : la version de départ sera la 0, et je fais de l'actuelle la 1.

Autre remarque : la conf système, celle de /etc, doit absolument :warning: correspondre à la version du logiciel, sans quoi elle sera rejetée et ignorée. Désormais, je mets à dispositions les confs par défaut dans l'arborescence des sources, à l'intérieur de resources/configuration.