1 /* Program to test the svgalib keyboard functions. */
2
3 #include <unistd.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <time.h>
7 #include <vga.h>
8 #include <vgagl.h>
9 #include <vgakeyboard.h>
10
usage(void)11 void usage(void)
12 {
13 puts("Usage: printftest <x> <y>\n"
14 "\tread text from keyboard and display it on screen\n"
15 "\tat position (x, y).\n"
16 "\t<ctrl>-D for quit\n"
17 "\t<ctrl>-R for carriage return\n"
18 "\t<Return> for line feed\n"
19 "\t<Tab> for tab\n"
20 "\t<ctrl>-G for bell\n"
21 "\t<ctrl>-H for backspace (non overwriting)\n"
22 );
23 exit(2);
24 }
25
main(int argc,char ** argv)26 void main(int argc, char **argv)
27 {
28 int x, y;
29 char buffer[2];
30 int vgamode;
31 int key, retval = 0;
32
33 if (argc != 3)
34 usage();
35 if (1 != sscanf(argv[1], "%d%c", &x, buffer))
36 usage();
37 if (1 != sscanf(argv[2], "%d%c", &y, buffer))
38 usage();
39
40 vga_init();
41 vgamode = vga_getdefaultmode();
42 if (vgamode == -1)
43 vgamode = G320x200x256;
44
45 if (!vga_hasmode(vgamode)) {
46 printf("Mode not available.\n");
47 exit(1);
48 }
49
50 vga_setmode(vgamode);
51 gl_setcontextvga(vgamode);
52 gl_enableclipping();
53 gl_setfont(8, 8, gl_font8x8);
54 gl_setwritemode(FONT_COMPRESSED + WRITEMODE_OVERWRITE);
55 gl_setfontcolors(0, vga_white());
56
57 buffer[1] = 0;
58 for(;;) {
59 key = vga_getch();
60 if (key == 4)
61 break;
62 if (key == 18)
63 key = '\r';
64 buffer[0] = key;
65 gl_printf(x, y, "%s", buffer);
66 x = y = -1;
67 }
68
69 vga_setmode(TEXT);
70
71 exit(retval);
72 }
73