⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mousetest.c

📁 linux 下svgalib编的一个界面程序示例
💻 C
字号:
/* Program to test the svgalib mouse functions. *//* Updated to use middle button and rx axis (for wheel mice)   by Brion Vibber <brion@pobox.com>, 5 July 1998 */#include <stdlib.h>#include <stdio.h>#include <vga.h>#include <vgagl.h>#include <vgamouse.h>#include <vgakeyboard.h>/* Manually open and close mouse? */#define MANUALLY_SETUP_MOUSE_NOTstatic int newcolor(void){    if (BYTESPERPIXEL == 1)	return random() % 15 + 1;    return gl_rgbcolor(random() & 255, random() & 255, random() & 255);}void main(void){    int vgamode, color, leftpressed, middlepressed;    int x, y, rx, ox, oy, boxsize, button, wheel;    struct MouseCaps caps;    vga_init();    vgamode = vga_getdefaultmode();    if (vgamode == -1)	vgamode = G320x200x256;    if (!vga_hasmode(vgamode)) {	printf("Mode not available.\n");	exit(-1);    }#ifndef MANUALLY_SETUP_MOUSE    /* Enable automatic mouse setup at mode set. */    vga_setmousesupport(1);#endif    vga_setmode(vgamode);    /* Disable wrapping (default). */    /* mouse_setwrap(MOUSE_NOWRAP); */    gl_setcontextvga(vgamode);    gl_enableclipping();#ifdef MANUALLY_SETUP_MOUSE    mouse_init("/dev/mouse", MOUSE_MICROSOFT, MOUSE_DEFAULTSAMPLERATE);    mouse_setxrange(0, WIDTH - 1);    mouse_setyrange(0, HEIGHT - 1);    mouse_setwrap(MOUSE_NOWRAP);#endif    /* Check the mouse capabilities */    if(mouse_getcaps(&caps)) {        /* Failed! Old library version... Check the mouse type. */        switch(vga_getmousetype() & MOUSE_TYPE_MASK) {        case MOUSE_INTELLIMOUSE:        case MOUSE_IMPS2:            wheel = 1;            break;        default:            wheel = 0;        }    } else {        /* If this is a wheel mouse, interpret rx as a wheel */        wheel = ((caps.info & MOUSE_INFO_WHEEL) != 0);    }    /* To be able to test fake mouse events... */    if (keyboard_init()) {	printf("Could not initialize keyboard.\n");	exit(1);    }    /* Set the range for the wheel */    if(wheel)        mouse_setrange_6d(0,0, 0,0, 0, 0, -180,180, 0,0, 0,0, MOUSE_RXDIM);    color = newcolor();    leftpressed = middlepressed = x = y = rx = ox = oy = 0;    boxsize = 5;        for (;;) {	keyboard_update();	gl_fillbox(x, y, boxsize, boxsize, color);        mouse_update();        /* The RX axis represents the wheel on an wheel mouse */        mouse_getposition_6d(&x, &y, NULL, &rx, NULL, NULL);        if(wheel && rx) {            /* For clarity - wipe the old location out             so we can redraw with the new box size */            gl_fillbox(ox, oy, boxsize, boxsize, 0);            /* Interpret wheel turns; we care only about direction,               not amount, for our purposes */            boxsize += (rx / abs(rx));            (boxsize < 1)?(boxsize = 1):((boxsize > 10)?(boxsize = 10):0);            /* Zero the wheel position */            mouse_setposition_6d(0,0,0, 0,0,0, MOUSE_RXDIM);        }        ox = x; oy = y;	button = mouse_getbutton();	if (button & MOUSE_LEFTBUTTON) {	    if (!leftpressed) {		color = newcolor();		leftpressed = 1;	    }	} else            leftpressed = 0;        if (button & MOUSE_MIDDLEBUTTON) {	    if (!middlepressed) {                /* Move the cursor to a random location */                mouse_setposition_6d(random() % WIDTH, random() % HEIGHT,0,                                     0,0,0,                                     MOUSE_2DIM);                middlepressed = 1;            }        } else            middlepressed = 0;	if (button & MOUSE_RIGHTBUTTON)	    break;    }#ifdef MANUALLY_SETUP_MOUSE    mouse_close();#endif    vga_setmode(TEXT);    exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -