Capture de caractère
Fermé
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
-
22 nov. 2013 à 13:26
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 10 déc. 2013 à 12:01
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 10 déc. 2013 à 12:01
A voir également:
- Capture de caractère
- Caractère ascii - Guide
- Capture d'écran samsung - Guide
- Capture d'écran whatsapp - Accueil - Messagerie instantanée
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
4 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
22 nov. 2013 à 21:23
22 nov. 2013 à 21:23
En standard il n'existe rien de tout ça.
Apres cela depend de ton OS ?
Et sil y a une erreur à la compil, cest que ton code est faux. Et pour le corriger, cest plus simple si tu nous le montres ;-)
Apres cela depend de ton OS ?
Et sil y a une erreur à la compil, cest que ton code est faux. Et pour le corriger, cest plus simple si tu nous le montres ;-)
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
1 121
Modifié par Franck7511 le 23/11/2013 à 14:12
Modifié par Franck7511 le 23/11/2013 à 14:12
Salut,
J'ai Fedora 17 et gcc en compilateur.
Le code fait presque 1000 lignes :( mais en gros, ce qui plante c'est :
GCC me renvoie :
"/tmp/ccE0HnRh.o: In function 'main':
blabla.c:(.text+0x19): undefined reference to 'resizeterm'
collect2: erreur: ld a retourné 1 code d'état d'exécution"
J'ai Fedora 17 et gcc en compilateur.
Le code fait presque 1000 lignes :( mais en gros, ce qui plante c'est :
#include <ncurses.h>
(...)
int main (int argc, char * argv[])
{
(...)
int l = (...);
int h = (...);
resizeterm(l, h);
(...)
}
GCC me renvoie :
"/tmp/ccE0HnRh.o: In function 'main':
blabla.c:(.text+0x19): undefined reference to 'resizeterm'
collect2: erreur: ld a retourné 1 code d'état d'exécution"
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
23 nov. 2013 à 14:20
23 nov. 2013 à 14:20
Lorsque tu compiles, as-tu rajouté l'option -l (L minuscule) ?
Il faut réaliser linker la bibliothèque libncurses : -lncurses (L minuscule).
Il faut réaliser linker la bibliothèque libncurses : -lncurses (L minuscule).
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
1 121
23 nov. 2013 à 14:25
23 nov. 2013 à 14:25
J'avais oublié... merci !
Maintenant ça compile. Mais ça n'a aucune action.
compile mais ne fait qu'imprimer blabla...
Maintenant ça compile. Mais ça n'a aucune action.
#include <ncurses.h>
int main()
{
resizeterm(100,45);
printf("blabla");
return 0;
}
compile mais ne fait qu'imprimer blabla...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
23 nov. 2013 à 14:58
23 nov. 2013 à 14:58
Je connais pas ncurses mais j'ai lu le man (il faut prendre cette habitude ;-)) :
Et cela dit : change the curses terminal size
Autrement cela ne changera pas ton terminal, mais celui de curses.
Pour créer une fenêtre curses : WINDOW * win = newwin(nlines, ncols, y0, x0);
Si tu veux vraiment redimensionner le terminal linux, tu dois pouvoir t'en sortir avec les fonctions de sys/ioctl.h mais pas aussi simple que resizeterm().
Et cela dit : change the curses terminal size
Autrement cela ne changera pas ton terminal, mais celui de curses.
Pour créer une fenêtre curses : WINDOW * win = newwin(nlines, ncols, y0, x0);
Si tu veux vraiment redimensionner le terminal linux, tu dois pouvoir t'en sortir avec les fonctions de sys/ioctl.h mais pas aussi simple que resizeterm().
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
1 121
23 nov. 2013 à 15:17
23 nov. 2013 à 15:17
Merci !
Sinon, des idées pour la capture de caractère ?
J'ai une idée (sale cela dit) pour la capture du caractère Entrée, mais pour le reste...
Sinon, des idées pour la capture de caractère ?
J'ai une idée (sale cela dit) pour la capture du caractère Entrée, mais pour le reste...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
Modifié par fiddy le 23/11/2013 à 15:26
Modifié par fiddy le 23/11/2013 à 15:26
Tu as la fonction getch() pour la capture de caractères.
Regarde par ici pour les fonctions ncurses : https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
Regarde par ici pour les fonctions ncurses : https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 9/12/2013 à 19:29
Modifié par [Dal] le 9/12/2013 à 19:29
Salut Franck7511,
Pour ton problème de redimensionnement de la fenêtre d'émulation de terminal dans laquelle s'exécute ton programme dans ton environnement graphique Fedora, je voulais juste de donner une autre perspective...
J'imagine que tu utilises Gnome-terminal sous Fedora.
Si c'est cela, une piste peut être là https://help.gnome.org/users/gnome-terminal/stable/pref-profiles.html.en c'est à dire la création d'un profil d'exécution de Gnome-terminal, avec les paramètres qui te plaisent (notamment la taille du terminal que tu souhaites) et le lancement du terminal avec ce profil, avec, en argument, ton programme console.
Je n'ai pas de console Gnome sous la main pour tester cela, mais j'ai fait quelque chose de similaire sous Ubuntu il y a quelques temps.
Dal
Pour ton problème de redimensionnement de la fenêtre d'émulation de terminal dans laquelle s'exécute ton programme dans ton environnement graphique Fedora, je voulais juste de donner une autre perspective...
J'imagine que tu utilises Gnome-terminal sous Fedora.
Si c'est cela, une piste peut être là https://help.gnome.org/users/gnome-terminal/stable/pref-profiles.html.en c'est à dire la création d'un profil d'exécution de Gnome-terminal, avec les paramètres qui te plaisent (notamment la taille du terminal que tu souhaites) et le lancement du terminal avec ce profil, avec, en argument, ton programme console.
Je n'ai pas de console Gnome sous la main pour tester cela, mais j'ai fait quelque chose de similaire sous Ubuntu il y a quelques temps.
Dal
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
1 121
9 déc. 2013 à 21:36
9 déc. 2013 à 21:36
Nope j'ai LXTerminal en fait. Et en fait il ne faut pas que je change de taille qu'une seule fois dans mon programme, mais plusieurs fois.
Je m'explique.
Je fais un démineur sur le terminal. Pour les grandes grilles, j'ai besoin d'agrandir la fenêtre... et vu qu'on peut rejouer, je dois pouvoir redimensionner !
Je m'explique.
Je fais un démineur sur le terminal. Pour les grandes grilles, j'ai besoin d'agrandir la fenêtre... et vu qu'on peut rejouer, je dois pouvoir redimensionner !
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 10/12/2013 à 10:51
Modifié par [Dal] le 10/12/2013 à 10:51
Salut Franck7511,
Je ne connais pas ton émulateur de terminal "LXTerminal".
Cependant, il est possible qu'il reconnaisse les séquences d'échappement xterm.
Il y en a de nombreuses, et parmi ces séquences, il y en a qui permettent d'agir sur le dimensionnement.
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
(cherche "Resize the text area to given height and width in characters" dedans)
Voilà un exemple qui fonctionne chez moi avec Putty, qui est un émulateur de terminal xterm (je n'ai pas d'installation avec X sous la main, mais cela devrait fonctionner avec tout émulateur xterm). Ce code redimensionne la fenêtre Windows dans laquelle s'exécute l'émulateur de terminal, en fonction des séquences d'échappement envoyées par le programme exécuté dans cet émulateur :
Dal
Je ne connais pas ton émulateur de terminal "LXTerminal".
Cependant, il est possible qu'il reconnaisse les séquences d'échappement xterm.
Il y en a de nombreuses, et parmi ces séquences, il y en a qui permettent d'agir sur le dimensionnement.
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
(cherche "Resize the text area to given height and width in characters" dedans)
Voilà un exemple qui fonctionne chez moi avec Putty, qui est un émulateur de terminal xterm (je n'ai pas d'installation avec X sous la main, mais cela devrait fonctionner avec tout émulateur xterm). Ce code redimensionne la fenêtre Windows dans laquelle s'exécute l'émulateur de terminal, en fonction des séquences d'échappement envoyées par le programme exécuté dans cet émulateur :
#include <stdio.h> /* * Programme de test de séquences d'échappement xterm */ int main(void) { printf("Pressez enter pour maximiser\n"); getchar(); printf("\e[9;1t"); printf("Pressez enter pour restaurer la " "taille avant maximisation\n"); getchar(); printf("\e[9;0t"); printf("Pressez enter pour dimensionner " "en 60 colonnes x 10 lignes\n"); getchar(); printf("\e[8;10;60t"); return 0; }
Dal
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
1 121
Modifié par Franck7511 le 10/12/2013 à 11:03
Modifié par Franck7511 le 10/12/2013 à 11:03
Salut,
Ce code ne redimensionne pas chez moi :/
J'ai aussi essayé printf("\e[10;1t"); pour le mode plein écran, sans succès.
Remarque, le plein écran me conviendrait aussi (ça enlèverait le problème de redimensionnement à chaque partie), s'il y a un moyen de faire ça simplement :)
J'ai vu ça sur Internet : https://ohse.de/uwe/software/resize.c.html mais à la compilation, y a une fonction qu'il n'apprécie pas trop... tparam de mémoire
Ce code ne redimensionne pas chez moi :/
J'ai aussi essayé printf("\e[10;1t"); pour le mode plein écran, sans succès.
Remarque, le plein écran me conviendrait aussi (ça enlèverait le problème de redimensionnement à chaque partie), s'il y a un moyen de faire ça simplement :)
J'ai vu ça sur Internet : https://ohse.de/uwe/software/resize.c.html mais à la compilation, y a une fonction qu'il n'apprécie pas trop... tparam de mémoire
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 10/12/2013 à 11:41
Modifié par [Dal] le 10/12/2013 à 11:41
Ah, et si tu mets
(il se peut que tu doives sortir de ta session X et la réinitailiser, ou faire
Sinon, je suis aussi tombé sur ce programme, qui permet de contrôler les fenêtres X pour des gestionnaires de fenêtres respectant la spécification EWMH (metacity pour Gnome et plein d'autres)
http://tomas.styblo.name/wmctrl/
Tu pourrais t'en servir pour identifier ta fenêtre et la redimensionner. Tu peux aussi télécharger ce programme et voir son code source, où on voit que la fonction window_move_resize utilise XResizeWindow (inclure
Mais vu que ta fenêtre est un terminal, envoyer des codes d'échappement est beaucoup plus simple.
Dal
xterm*allowWindowOps: truedans
~/.Xdefaults?
(il se peut que tu doives sortir de ta session X et la réinitailiser, ou faire
xrdb ~/.Xdefaults).
Sinon, je suis aussi tombé sur ce programme, qui permet de contrôler les fenêtres X pour des gestionnaires de fenêtres respectant la spécification EWMH (metacity pour Gnome et plein d'autres)
http://tomas.styblo.name/wmctrl/
Tu pourrais t'en servir pour identifier ta fenêtre et la redimensionner. Tu peux aussi télécharger ce programme et voir son code source, où on voit que la fonction window_move_resize utilise XResizeWindow (inclure
X11/Xlib.het linker avec
-lX11) pour redimensionner les fenêtres X (après avoir obtenu l'information sur les fenêtres existantes via
XQueryTree, etc.).
Mais vu que ta fenêtre est un terminal, envoyer des codes d'échappement est beaucoup plus simple.
Dal
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
10 déc. 2013 à 12:01
10 déc. 2013 à 12:01
en voyant les options de ligne de commande de lxterminal, tu devrais aussi pouvoir faire :
Dal
lxterminal --geometry=60x10 -e /chemin/vers/mon/programmepour fixer la taille au lancement
Dal