DCMOTO - Emulateur universel Thomson 8 bits : Forum - Emulateurs et utilitaires - Probleme avec un clavier QWERTY
|
|
Yoann
Visiteur
|
Date : 19/04/2005 à 06h55
Salut Daniel,
Comme tu le sais, je n'ai acces qu'a des claviers QWERTY. Perso, ca ne me derange pas (j'ai meme plus l'habitude du qwerty que de l'azerty) mais ca me pose un petit probleme pour 2 characters dont j'en aurais bien besoin en assembleur (surtout 1)
< et >
Sur DCMOTO en version MO5, je peux les generer de la facon suivante :
SHIFT+M : <
SHIFT+, : > (la virgule etant a cote du M)
Par contre, en mode TO8 sur lequel je travail essentiellement, je n'ai pas trouve le moyen de faire apparaitre ces 2 caracteres.
En passant le layout du clavier en FR (France) sous Windows XP ou Windows 2000, cela ne resoud pas le probleme. En ayant essaye une combinaison de chaque touche avec SHIFT, ALT (Droit et gauche), le probleme est toujours la. J'ai le meme probleme avec TEO aussi.
Alors, as-tu une idees comment je pourrais faire ? A part evidement generer les characteres sur mon vrai TO9+ puis charger la disquette dans le PC, la convertir ... etc ... un peu lourd pour 2 characteres ;)
Sous BASIC, je vais un PRINT CHR$(jenesaisplusquelnumero) et je recupere dans les lignes ... mais sous assembleur, ca n'est pas possible.
Alors ?
Merci pour ta reponse. Si tu veux une photo de mon clavier, fait moi signe.
Yoann,
PS: Je suis abstent pendant 2 semaines 1/2 sans internet (au moins pendant 1 semaine 1/2) donc ne soit pas etonne de ne pas voir de reponses de ma part
|
en haut - en bas |
|
|
|
Daniel
Visiteur
|
Date : 19/04/2005 à 09h32
Avec dcmoto, les italiens ont des problèmes de clavier, les immigrés en Suisse ont des problèmes de clavier, et maintenant les chinois. Il est temps de réagir
Dans un premier temps, Yoann je t'ai envoyé par mail un programme pour déterminer les scancodes de ton clavier. Tu m'envoies la map, et je compilerai une version QWERTY de dcmoto, qui résoudra provisoirement ton problème, et probablement aussi celui des suisses et des italiens.
Dans un deuxième temps (beaucoup plus lointain), j'ai prévu d'ajouter dans dcmoto un module de configuration du clavier, comme dans les anciennes versions DOS de dcmo5.
Daniel
|
en haut - en bas |
|
|
|
Fool-DupleX
Visiteur
|
Date : 19/04/2005 à 09h39
Daniel,
En utilisant les fonctions de windows, tu pourrais mapper automatiquement le clavier. Je peux t'envoyer un bout de code a l'occasion. Les scan codes ca n'existe plus... (en fait ils sont emules). Dans une version windows jamais achevee de mon emu, non seulement la detection est automatique, mais en plus je peux choisir d'avoir avec la touche majuscule, soit le mapping du mo5 (ex: $ sous 4) soit le mapping du pc (ex: ç sous 4 chez moi). Ainsi j'ai un mapping exact et je tape ce que je vois sur le clavier, pas besoin de tatonner.
J'essaye de te retrouver ca.
Fool
|
en haut - en bas |
|
|
|
Yoann
Visiteur
|
Date : 19/04/2005 à 09h45
Citation : | Avec dcmoto, les italiens ont des problèmes de clavier, les immigrés en Suisse ont des problèmes de clavier, et maintenant les chinois |
Il faut te rendre a l'evidence tres cher Daniel - Ton programme est repute et utilise aux quatres coins du monde
|
en haut - en bas |
|
|
|
Daniel
Visiteur
|
Date : 19/04/2005 à 09h53
Dans la version SDL de DCMO5, j'utilise les noms symboliques des touches (définis dans SDL).
Dans DCMOTO, je peux aussi utiliser les noms symboliques de Windows à la place des scancodes, ce qui devrait résoudre le problème.
Cependant, la gestion du clavier dans le moniteur des MO (MO5, MO5E, MO5NR, MO6 et PC128) impose de garder sur une même touche le caractère "shifté" et le caractère non shifté. Par exemple, sur MO5, le caractère " sera toujours sur la touche 2, alors que sur un PC il est sur la 3. Ou alors il faut modifier les tables internes du moniteur MO5, et ça ne me plait pas trop.
Daniel
|
en haut - en bas |
|
|
|
Fool-DupleX
Visiteur
|
Date : 19/04/2005 à 10h11
Bien sur que non. Crois-tu vraiment que j'ai touche au coeur de mon mo5 emule ? Mon sens de la deontologie ne me le permettrait pas.
Je modifie a la volee l'emulation des lignes lues par le PIA dans mon emu. Ainsi le "MO5" croit etre bien sur la bonne touche.
Naturellement je n'ai pas verifie si cette technique peut s'appliquer au 6805 du clavier des machines de derniere generation, mais je ne vois pas pourquoi ca ne le ferait pas, je trafique les fils virtuels qui sont en amont meme 
Fool
|
en haut - en bas |
|
|
|
Daniel
Visiteur
|
Date : 19/04/2005 à 10h18
Dans TEO, Eric a modifié les tables internes du TO8D pour avoir la même configuration que le clavier PC. Dans dcmoto j'ai voulu conserver les tables originales, c'est pourquoi certaines touches ne correspondent pas. On pourrait débattre éternellement sur ce choix 
Daniel
|
en haut - en bas |
|
|
|
Yoann
Visiteur
|
Date : 19/04/2005 à 10h31
N'ayant jamais ecrit d'emulateur, je peux peut etre dire une grosse connerie, mais plutot que de mapper une touche (ou un scancode) en le transformant en scancode pour Thomson, pourquoi ne pas lire la touche - et la transformer en scancode thomson.
Genre, je tape & - et tu transforme ca dans le scan code Thomson (en simulant au passage la touche shift par exemple) ?
Donc ca fonctionnerait sur n'importe quel type de clavier PC, qu'il soit QWERTY, AZERTY, Chinois ou du Kurdistan Nord Oriental.
|
en haut - en bas |
|
|
|
Daniel
Visiteur
|
Date : 19/04/2005 à 11h09
Yoann a écrit : | pourquoi ne pas lire la touche - et la transformer en scancode thomson |
Lire le code ASCII est aussi une solution, assez voisine de l'utilisation des noms symboliques de Windows. Mais il faut penser aussi aux touches de contrôle, en particulier Basic et ACC, qui n'ont pas d'équivalent sur PC.
Et puis, il y a toujours cette même question qui oppose les puristes aux pragmatiques : si 2 caractères sont sur la même touche de la machine émulée, doit-on les dissocier ou non dans l'émulateur ?
Et une autre encore : un bon programmeur MO5 tape sans regarder le clavier. Si on change les touches de place dans l'émulateur il sera complètement perdu 
Daniel
|
en haut - en bas |
|
|
|
Fool-DupleX
Visiteur
|
Date : 19/04/2005 à 11h46
Franchement je ne vois pas ou est le probleme, et je n'ai jamais vu - mais peut-etre que je n'ai rien compris. Je vais te filer mon code ca ira plus vite. moi je modifie le mapping en tapant ALT-la touche quand j'en ai besoin mais on pourrait tres bien imaginer que caps lock ou n'importe quelle autre touche fasse le travail de maniere permanente, au choix de l'utilisateur d'avoir le vrai clavier PC ou le faux clavier thomson, ceci en toute transparence du type de clavier. Ma modification a la volee des lignes du PIA correspond exactement a ce que decrit Yoann. Ainsi, tout est transparent et rien n'a ete modifie dans le mo5 emule. Qu'y a-t-il a ajouter ? Windows fournit tout ce qu'il faut pour tenir compte de la locale, du mapping, des claviers speciaux, pourquoi utiliser encore et toujours les trucs de grand-mere qui n'ont plus court : un clavier USB se fiche pas mal des scancodes et il y a une norme pour les peripheriques HID.
Bien sur il y aura toujours un minimum de configuration a proposer pour les touches inexistantes sur le clavier PC. Mais bon. Il est assez naturel de penser que le BASIC se mappe sur le shift-droit, le STOP sur Esc. Reste le RAZ et le ACC. Note au passage que le choix de la touche ACC sur un clavier suisse ne pose pas de probleme : tous les accents sont regroupes sur une seule et meme touche muette, le choix est donc tout fait ! 
Fool
|
en haut - en bas |
|
|
|
Yoann
Visiteur
|
Date : 19/04/2005 à 11h46
Je comprend ton soucis, mais comme tu le dits, il y a des touches sur PC qui n'existent pas sur Thomson. Mais il y a aussi un paquet de touches sur les claviers de nos jours qui n'existent pas sur Thomson.
En programmant sous emulateur, il a fallu que je re-apprenne a taper sur un clavier thomson, sans me soucier des touches thomson (t'imagine le bazar avec un clavier QWERTY). J'ai developpe mes sections de chinese stack completement a l'aveuglette donc :-)
Franchement, je pense que lorsqu'on tape sur un clavier de PC, on ne se soucie pas de savoir ou se trouve cette touche sur le vrai thomson. Mais c'est vrai que tu as raison, quand tu parles d'emuler des touches qui n'existent pas sur PC (comme ACC, RAZ, BASIC ... etc ...).
Je n'ai pas de solution magique en ce qui concerne la meilleur methode ceci dit
|
en haut - en bas |
|
|
|
Fool-DupleX
Visiteur
|
Date : 19/04/2005 à 12h18
Heu mais moi je n'ai aucun souci, ce probleme a ete resolu il y a plus d'une annee. C'est vous qui avez l'air de vous casser la tete pour un probleme qui n'en est plus un 
Fool
|
en haut - en bas |
|
|
|
Daniel
Visiteur
|
Date : 19/04/2005 à 14h14
Fool-DupleX a écrit : | C'est vous qui avez l'air de vous casser la tete pour un probleme qui n'en est plus un |
Dans un programme MO5, je peux tester la combinaison de deux touches < et >
Comment peut-on la faire sur un PC AZERTY 
Daniel
|
en haut - en bas |
|
|
|
Fool-DupleX
Visiteur
|
Date : 19/04/2005 à 14h29
En effet c'est un bon point, mais la tu touches aux limites physiques, a part y aller au burin...
Fool
|
en haut - en bas |
|
|
|
Daniel
Visiteur
|
Date : 19/04/2005 à 14h43
Citation : | Il est assez naturel de penser que le STOP se mappe sur Esc |
Ce n'est pas très naturel. Les utilisateurs TO8 ont l'habitude du stop à côté du A, il est donc plus logique de mapper sur la touche tabulation. Ou alors sur Pause, car Stop et Pause, c'est un peu la même chose. Mais surtout pas sur Echap, car je l'utilise pour émuler le bouton reset dans la dernière version de dcmoto. Tout simplement parce qu'Echap me semble positionné au même endroit que le fameux petit bouton blanc du MO5.
Autre argument pour conserver la place des touches : plusieurs programmes Thomson transforment la machine en orgue électronique, en affectant une note à chaque touche dans l'ordre de la gamme. J'en ai ecris un en 1985. Je l'avais même envoyé à Hebdogiciel. Si tu changes l'ordre des touches, c'est injouable. Et tu risques d'avoir 2 touches différentes qui jouent la même note (par exemple < et >).
Il faut aussi, pour les MO, permettre l'appui simultané de plusieurs touches, par exemple M, O, 6, qui affiche l'image des concepteurs du MO6, ou shift droit + shift gauche + espace + w (par exemple) dans Flipper (pour remuer le flipper tout en jouant la bille), ou beaucoup plus dans mon programme "Grandes Orgues" pour MO5 qui permet de jouer toutes les touches à la fois.
Je pourrais allonger cette liste de raisons, qui me poussent à garder en émulation une configuration de clavier aussi proche que possible de la machine émulée. Il y a un principe de base que je ne veux pas transgresser : si 2 caractères sont sur la même touche du Thomson, ils sont sur la même touche dans l'émulateur. S'ils sont sur 2 touches distinctes, c'est aussi 2 touches distinctes dans l'émulateur.
Reste à paramétrer la correspondance des touches. Mais surtout pas des caractères C'est mon dernier mot 
Daniel
|
en haut - en bas |
|
|
|
|
|
Fool-DupleX
Visiteur
|
Date : 19/04/2005 à 15h17
Pas mal le clavier. en fait c'est moins complique que l'inverse !
Sinon, pour clore, je respecte ton opinion, mais je trouve que tu retournes un peu le probleme. Pour moi, la plupart des gens n'ont jamais utilise (et je parie qu'avec le temps, y'en aura de plus en plus ) un mo5 de leur vie, leur preference va donc au mapping du clavier PC et non a l'original pour l'usage d'un emulateur. On a pas envie de se monter le chou parce que les touches ne sont pas a leur position intuitive (bon sauf pour les touches speciales). De toute maniere, ca reste largement un faux probleme quand meme puisque mon code permet de choisir soit l'un soit l'autre, alors tout le monde est content (sauf peut-etre pour le < > ).
Je te file ca tantot, tu pourras t'en inspirer, enfin si tu veux 
Fool
|
en haut - en bas |
|
|
|
Daniel
Visiteur
|
Date : 19/04/2005 à 16h03
Fool-DupleX a écrit : | Je te file ca tantot |
Merci
Notre discussion montre bien qu'il n'y a pas de solution évidente et définitive. Je me suis fait l'avocat du diable en défendant une position, mais tes arguments sont également excellents. Depuis mes débuts dans l'émulation, je me joue en privé ce même débat, et je n'ai toujours pas tranché définitivement. Finalement, tu as trouvé le bon compromis : programmer les deux solutions, et laisser le choix à l'utilisateur. Il se déterminera en fonction de ses préférences ou des programmes qu'il veut émuler.
Daniel
|
en haut - en bas |
|
|
|
Fool-DupleX
Visiteur
|
Date : 19/04/2005 à 17h57
Hormis le cas du < > ou tu m'as vraiment scotche. On devrait inventer un clavier compose de demi-touches deplaçables a volonte 
Fool
|
en haut - en bas |
|
|
|