Salut les C,
En me servant du module ioctl j'ai créer un mini-éditeur de texte en mode terminal dont le concept est simple:
- Je récupères la taille du terminal
-Puis je boucle afin de créer un espace pour entré du texte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 short size[4] ; ioctl(0,TIOCGWINSZ,&size) ; printf("width: %i height: %i",size[1],size[0]) ;
-Je repositionne le curseur en haut a gauche après l'affiche du texte de bienvenue qui indique la touche a taper ('$' ) pour sortir, suite a quoi on peut choisir de sauver le texte dans un fichier ou quitter sans sauvegarder.
-J'utilise simplement getchar() (est ce la bonne méthode a cet effet ?) en boucle pour récupérer les données taper avec des structures conditionnels pour le contrôle:
Cela fonctionne parfaitement avec le défaut que si le caractères '$' est contenue dans la ligne le programme réagit comme si vous vouliez quitter, le programme est un peu plus sophistiquer mais ça ne vole pas haut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 int char_counter=0 ; char text_buf[65535] ; int c ; int cols_count, line_count ; cols_count = line_count = 0 ; while ((c=getchar()) != '$' ) { if (c == ' \n') { line_count++ ; cols_count=0 ; } else { cols_count++ ; } text_buf[char_counter]=c ; char_counter++ ; }
Bref le sujet du terminal et son contrôle me passionne et j'aimerai améliorer mon programme et j'ai commencer par essayer de pouvoir rendre l'éditeur de texte navigable avec des séquences de codes de la page man console_codes.
J'arrive a changer le curseur de place, avec soit:
-ou avec les coordonnées:
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("\x1B[A") , printf("\x1B[B") , printf("\x1B[C") , printf("\x1B[D") ;
-Le problème étant l'affichage des des séquences: ^[[A, ^[[B, ^[[C, ^[[D.
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("\x1B[%i;%iH",cols_count,line_count) ;
dont je doit récupérer les caractères dans un tableau et valider avec la touche enter dont un bloc if exécute une des séquences printf(...) présenter plus haut.
Ce n'est pas gagner...!!!
je pourrai me servir du pavé numérique mais l'idée me plais pas même si c'est une solution et que j'utilise bien le caractères '$' pour sortir.
Je ne sais si je peut utiliser les signaux comme nano pour afficher un menu.
Je cherche de la documentation, des infos, des conseils sur le sujet mais Google ne me mène a rien et les pages man ne disent pas tout, le sujet est certainement vaste tout comme le C comme j'ai remarquer.
Si vous avez des idées, infos, conseils, liens, a me donner je vous serai grandement reconnaissant.
Merci pour vos réponses éclairés.
Partager