|
|
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)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/33394183cee2.html, оценка из 5, голосов 10
|