|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre Expert
![]() ![]() Inscription : décembre 2002 Messages : 1 423 ![]() |
Bonjour,
Je me suis mis dans la tête de développer un émulateur de terminal graphique en java (genre xterm, en surement moins complet). Cependant, mes connaissances sur le sujet sont assez basiques. Je sais qu'il existe plusieurstype de terminaux, qu'il ont chacun des codes propre pour bouger le curseur, choisir une couleur etc... ncurse sait se configurer pour s'adapter aux différents terminaux. Par contre, comment un terminal comme xterm se connecte au système ? Comment dialogue-t-il avec ? Quel serait le terminal a émuler pour avoir de la couleur et qui ne serait pas trop dur à émuler ? Bref, Si j'ai mis ce post dans la sectin 'system' et non dans 'developpement' c'est que je n'ai pas besoin d'aide pour le developpement mais bel et bien sur comment fonctionne un terminal ps: pour ceux que ça intéresse, je souhaite developpez un terminal en java pour pouvoir utiliser vim dans netbeans (ou eclipse). Je pense qu'il devrait suffire de faire un plugin contenant le terminal avec Vim dedans pour que se soit réalisble
__________________
Reportage d'Arte sur Linux |
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 33 ![]() |
L'émulation de terminal et ses arcanes est très bien détaillé dans le livre de Ciegelski sur la conception du système linux.
Regarde aussi termios.h et .c dans les sources du noyau. |
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 990 ![]() |
Les terminaux VT100 supportent la couleur à ce que j'ai pu lire. Et je suppose qu'ils sont plus simples (moins de fonctionnalités) que leurs cousins VT101, VT102, VT220 etc...
Et comment le terminal communique avec l'application derrière, je l'ignore encore, mais je vais chercher, ça à l'air intéressant.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter. |
|
|
00
|
|
|
#4 | |||
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Bonjour Marmataru
Bonjour Celelibi Je ne sais pas si je souhaite la bonne année ou pas ... cette année j'ai même pas fêté alors... Bon, tout d'abord avant de t'apporter ma maigre contribution, Marmataru, puis-je me m'enquérire auprés de ton esprit des raisons de étrange entreprise ? Tu cré un nouvel OS ? Un distribution Linux ? Ma minable contribution : pour développer un terminal, il te faut être bien documenté(e) sur le protocol (les terminaux répondent à des protocoles de communication basés sur ASCII). Les terminaux VT100 répond à un protocol librement accessible sous le nom de ECMA-48. Je ne te présente pas ECMA, ... si tu ne connais pas, Google t'en parlera. Certaine norme sont connu sous plusieurs nom. Ainsi en va t-il d'Unicode par exemple, qui a une norme ISO équivalente. Ce n'est qu'une question de droit. Certaine norme sont accessible après s'être aquité de quelque frais, et les droit permette parfois une distribution libre des informations après qu'elles aient été re-rédigés. La norme ECMA-48 a également ses équivalentes, qui sont DP6419 et ISO/IEC-6429. En fait, je suppose que le norme d'origine est ISO/IEC, et qu'elle a été reprise par ECMA sous d'autres droits (beaucoup de norme ECMA ont suivi de processus). Tu pourra obtenir la norme ECMA-48 ici : Standard ECMA-48 (le lien de téléchargement est en bas de page... mais je t'invite à ne pas y sauter directement et à lire la page...) If you are at ease with english, I may suggest you this reading : The VT100 and its successors. Tu trouvera une réponse à une question posée par Celelibi : quels sont les différences entre les différents types de terminaux. Concernant la différence entre les différents types de terminaux, il ne faut pas oublier qu'avant d'être une norme logiciel, les terminaux sont régis par des normes physique (il s'agissait d'implémenter physiquement certaines caractèrisitique). Ainsi, certains terminaux sont seulement différent d'un point de vue technique pure, mais pas nécéssairement différent d'un point de vue logiciel... et c'est le point de vue logiciel qui est important pour toi ici. ![]() Terminal VT100 ... c'est vraiment ça que tu veux Marmataru ???!! ![]() Terminal VT510 ... je te conseil ça au minimum quand même... sinon ce serait une regression... hihihi Pour la différence entre VT100 et VT101 : VT100 -> VT101. C'est un tout petit paragraphe en bas de page (il n'y en a pas plus apparement) Citation:
Citation:
Citation:
Et pour finir, il y a ce document, que je n'ai même pas téléchargé tellement il est gros (25M) : ek-vt100-tm-002.pdf (DEC VT100 service manual) from http://vt100.net/docs Voili-voilou إلى القاء (à+) .... heuuuu au passage, est-ce que quelqu'un(e) a une réponse à ce topic ? : http://www.developpez.net/forums/sho...d.php?t=257667 (mais peut-être que je n'ai pas mis te topic au meilleur endroit, et que j'aurais du le mettre ici dans « system » plutôt que dans « developpement ») |
|||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Inscription : décembre 2002 Messages : 1 423 ![]() |
Merci Hibou57 pour toutes ces informations
En fait jene cherche ni à faire un nouvel os ou une nouvelle distribution linux (je ne vois pas le rapport avec le développement d'un exmulateur de terminal....). Je souhaite juste permettre à des application Java de lancer des applications en mode texte. Ainsi, je voudrais créer une composant graphique pour java qui permette d'intégrer un processus Vim ou un shell bash etc... J'aimerais faire ça de la même manière que xterm. Xterm est une application graphique qui émule un terminal pour lancer des application en mode texte (un shell ou une application texte). Donc je voudrais juste faire un émulateur de terminal en java. Le problème pour commencer c'est que je ne sais pas comment je peux connecter un émulateur de terminal au système. Je porrais peut ête me connecter au port telnel mais ça bloquerais le port. Xterm lui crée des noeuds dans /dev/pts. Ouvrer un xterm et faites 'echo bonjour > /dev/pts/0'. Mais comment créer ces noeuds ? Après pour les codes de contrôle du terminal ça ne devrait pas poser de problème ce sont juste des codes d'échapement
__________________
Reportage d'Arte sur Linux |
|
|
00
|
|
|
#6 | |||
|
Inactif
Inscription : mars 2006 Messages : 852 ![]() |
Citation:
Citation:
Citation:
En fait, tune connectera pas ton émulateur au système, mais tu le connectera a une application. Ton émulateur sera un terminal, puisqu'il émule un terminal. Et un terminal est utile en tant qu'interface avec une application. Donc tu comprend bien que tu connectera ton interface à une application... et non pas au système. Je comprends malgré tout pourquoi tu le prend par le mauvaise bout : on associe souvent terminal et système, et donc quand on associe une application à un terminal, on fait un raccourci trop rapide, et on pense à tort que c'est une association à un élément du système. Ce qui le fait penser à tort, c'est que c'est habituellement le système, le noyau linux qui émule le terminal. Mais dans ton cas, le système ne se mellera absolument pas de la relation entre ton terminal et l'application qui y sera connecter (à moins que tu ne veuille vraiment implémenté les IOCTL pour termios... mais je te déconseille de t'arracher les cheveux avec ça) Il te faut juste un pipe... d'un point de vue au niveau, un noeud tty n'est rien d'autre qu'un pipe... c'est un driver de caractère, mais en fait surtout un pipe de caractère. Il y a des numéro majeur-mineur (4,0 pour tty0 par exemple), mais cela ne sert qu'à identifier le pilote qui est derrière de pipe. Si jamais derrière le pipe il y a une tout autre application (qui n'est pas un pilote du noyau), alors le pipe n'a pas besoin de tout ça... Tu cré un pipe. A un bout du pipe il y a ton emulateur (en fait, un pseudo pilote), et à l'autre bout du pipe, il y a l'application. Le problème est plutôt de savoir comment connecté l'application au pipe. Alors à ce point là, soit 1) l'application est paramètrable et on peut lui donner le chemin du pipe surlequel elle se connecte (qui est habituellement /dev/tty-n, mais qui peut tout aussi bien être /perso/cheztartenpoin/monemul), soit 2) l'application n'est pas paramètrable, et en ce cas c'est surement qu'elle va chercher elle même un noeud dans /dev/quelquechose, et alors dans ce cas, il faut que tu fasse un ln (lien symbolique) dans /dev pour que /dev/quelquechose pointe vers ton pipe. Si effectivement tu te contente d'émuler la communication des commande entre l'application et le système d'entrée/sortie-affichage, alors c'est suffisant. N'hésite pas à me demander si ces explications te paraissent trop confuse... et excuse pour la mauvaise expression et les probables faute d'orthographe... je n'ai pas le temps de me relire là tout de suite A+ |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com