Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Alexander Lubyagin                   2:5056/16.70   30 Oct 2004  21:16:22
 To : All
 Subject : svgalib keyboard event handler, question
 -------------------------------------------------------------------------------- 
 
 Вопрос по реализации пользовательского обработчика keyboard events.
 Создавая программу по след.схеме, получаем зависание системы -
 
 --------------------------------------------------------------------
 // GE/graphical editor for SVGAlib 1.2
 //
 // GE worked in SVGA 800x600, 24bpp mode
 // - required video RAM: 921600 bytes
 // - tested on video RAM: 1024 Kbytes (CL5426)
 
 #include <vga.h>
 #include <vgakeyboard.h>
 #include <math.h>
 
 #define MODE G640x480x16M
 #define kbcodeESC 0x1B
 
 #define U08 unsigned char
 #define S08 signed char
 #define C08 char
 
 #define U16 unsigned short
 #define S16 signed short
 #define I16 short
 
 #define U32 unsigned int
 #define S32 signed int
 #define I32 int
 
 void drawrect (U16 x1, U16 y1, U16 x2, U16 y2) {
     vga_drawline (x1,y1,x2,y1);
     vga_drawline (x2,y1,x2,y2);
     vga_drawline (x2,y2,x1,y2);
     vga_drawline (x1,y2,x1,y1);
     return;
 }
 
 void drawgrid (U16 x1, U16 y1, U16 x2, U16 y2, U16 dx, U16 dy) {
     U16 x,y;
     for (y=y1;y<=y2;y+=dy) {
         vga_drawline (x1,y,x2,y);
     }
     for (x=x1;x<x2;x+=dx) {
         vga_drawline (x,y1,x,y2);
     }
     vga_drawline (x1,y2,x2,y2);
     vga_drawline (x1,y1,x1,y2);
     return;
 }
 
 int ch;
 
 void handleKeyboard (int scancode, int press) {
     //
     // press
     //   KEY_EVENTRELEASE, 0
     //   KEY_EVENTPRESS, 1
     //
     // keyboard_translatekeys()
     //
     // keyboard_setdefaulteventhandler()
     //
     //   keyboard_getstate
     //   keyboard_keypressed
     //   keyboard_clearstate
     //
     // printf ("%d\n",scancode);
     ch = scancode;
     printf ("ch: %d\n",ch);
     return;
 }
 
 int main () {
     U32 NX,NY;
     U32 x,y;
     U32 iR,iG,iB;
     U32 dX,dY,nC;
     C08 ch;
 
     vga_init();
     vga_setchipset(CIRRUS);
     vga_setmode(MODE);
     NX = vga_getxdim();
     NY = vga_getydim();
 
     vga_screenoff();
     vga_setrgbcolor(255,255,255);
     drawgrid(0,0,NX-1,NY-1,10,10);
     vga_screenon();
 
     x = NX/2;
     y = NY/2;
     nC = 256;
     keyboard_init();
     keyboard_seteventhandler(handleKeyboard);
     ch = 0;
     do {
         dX = random(256)%3-1;
         dY = random(256)%3-1;
         x += dX;
         y += dY;
         nC += 1;
         vga_setcolor(nC/16);
         vga_drawpixel(x,y);
     } while (!ch);
 //  } while (keyboard_keypressed(SCANCODE_ESCAPE));
     keyboard_setdefaulteventhandler();
     keyboard_close;
 
     vga_setmode(TEXT);
     return 0;
 }
 --------------------------------------------------------------------
 
 P.S. Rambler по запросу svgalib+event+handler выдал одну ссыллку. :)
 
 Подскажите истинный путь. :)
 
 EMacs не предлагать.
 --- GoldED+/LNX Debian
  * Origin: KOSC/Kirov Open Source Community (2:5056/16.70)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 svgalib keyboard event handler, question   Alexander Lubyagin   30 Oct 2004 21:16:22 
 svgalib keyboard event handler, question   Alexander Lubyagin   02 Nov 2004 09:03:20 
Архивное /ru.linux/33394183cee2.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional