本文整理汇总了C++中enable_mouse函数的典型用法代码示例。如果您正苦于以下问题:C++ enable_mouse函数的具体用法?C++ enable_mouse怎么用?C++ enable_mouse使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了enable_mouse函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: toggle_mouse
void
toggle_mouse(void)
{
if (mouse_enabled)
disable_mouse();
else
enable_mouse();
}
开发者ID:rkd77,项目名称:elinks-tv,代码行数:8,代码来源:mouse.c
示例2: HariMain
void
HariMain(void)
{
boot_info_t* binfo = (boot_info_t*)ADR_BOOTINFO;
char debug_info[64], mouse_cursor[256], keybuf[32];
int mouse_x, mouse_y;
init_gdt_idt();
init_pic();
io_sti();
fifo_init(&g_keybuf, keybuf, 32);
io_out8(PIC0_IMR, 0xf9);
io_out8(PIC1_IMR, 0xef);
init_keyboard(); /* initialize keyboard */
init_palette();
init_screen(binfo->vram, binfo->screen_x, binfo->screen_y);
mouse_x = (binfo->screen_x - 16) / 2;
mouse_y = (binfo->screen_y - 28 - 16) / 2;
init_mouse_cursor8(mouse_cursor, COLOR8_848484);
draw_block8_8(binfo->vram, binfo->screen_x, 16, 16,
mouse_x, mouse_y, mouse_cursor, 16);
draw_font8_asc(binfo->vram, binfo->screen_x, 8, 8,
COLOR8_FFFFFF, "HELLO BOYS:");
draw_font8_asc(binfo->vram, binfo->screen_x, 9, 9,
COLOR8_000000, "HELLO BOYS:");
draw_font8_asc(binfo->vram, binfo->screen_x, 31, 31,
COLOR8_000000, "WELCOME TO THE LOVELY TOY-OS.");
draw_font8_asc(binfo->vram, binfo->screen_x, 30, 30,
COLOR8_FFFFFF, "WELCOME TO THE LOVELY TOY-OS.");
sprintf(debug_info, "screen=>{%d, %d}", binfo->screen_x, binfo->screen_y);
draw_font8_asc(binfo->vram, binfo->screen_x, 16, 64,
COLOR8_FF0000, debug_info);
enable_mouse(); /* enabled mouse */
for ( ; ; ) {
int data;
io_cli();
if (0 == fifo_size(&g_keybuf))
io_stihlt();
else {
data = fifo_get(&g_keybuf);
io_sti();
sprintf(debug_info, "%02X", data);
fill_box8(binfo->vram, binfo->screen_x, COLOR8_008484, 0, 16, 15, 31);
draw_font8_asc(binfo->vram, binfo->screen_x,
0, 16, COLOR8_FFFFFF, debug_info);
}
}
}
开发者ID:hbfhaapy,项目名称:study,代码行数:58,代码来源:bootpack.c
示例3: disenable_mouse
void EMU::toggle_mouse()
{
// toggle mouse enable / disenable
if(mouse_enabled) {
disenable_mouse();
}
else {
enable_mouse();
}
}
开发者ID:meesokim,项目名称:fc-100,代码行数:10,代码来源:win32_input.cpp
示例4: HariMain
void HariMain(void)
{
struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;
char s[40], mcursor[256], keybuf[32], mousebuf[128];
int mx, my, i;
init_gdtidt();
init_pic();
io_sti(); /* IDT/PIC的初始化结束,开启CPU中断 */
fifo8_init(&keyfifo, 32, keybuf);
fifo8_init(&mousefifo, 128, mousebuf);
io_out8(PIC0_IMR, 0xf9); /* 许可PIC1和键盘(11111001) */
io_out8(PIC1_IMR, 0xef); /* 许可鼠标(11101111) */
init_keyboard();
init_palette();
init_screen8(binfo->vram, binfo->scrnx, binfo->scrny);
mx = (binfo->scrnx - 16) / 2;
my = (binfo->scrny - 28 - 16) / 2;
init_mouse_cursor8(mcursor, COL8_008484);
putblock8_8(binfo->vram, binfo->scrnx, 16, 16, mx, my, mcursor, 16);
sprintf(s, "(%d, %d)", mx, my);
putfonts8_asc(binfo->vram, binfo->scrnx, 0, 0, COL8_FFFFFF, s);
enable_mouse();
for (;;) {
io_cli();
if (fifo8_status(&keyfifo) + fifo8_status(&mousefifo) == 0) {
/* J
char ss[10];
sprintf(ss, "%c", "J");
putfonts8_asc(binfo->vram, binfo->scrnx, 100, 100, COL8_FFFFFF, ss);
*/
io_stihlt();
} else if (fifo8_status(&keyfifo) != 0) {
i = fifo8_get(&keyfifo);
io_sti();
sprintf(s, "%02X", i);
boxfill8(binfo->vram, binfo->scrnx, COL8_008484, 0, 16, 15, 31);
putfonts8_asc(binfo->vram, binfo->scrnx, 0, 16, COL8_FFFFFF, s);
} else if (fifo8_status(&mousefifo) != 0) {
i = fifo8_get(&mousefifo);
io_sti();
sprintf(s, "%02X", i);
boxfill8(binfo->vram, binfo->scrnx, COL8_008484, 32, 16, 47, 31);
putfonts8_asc(binfo->vram, binfo->scrnx, 32, 16, COL8_FFFFFF, s);
}
}
}
开发者ID:NeilJudson,项目名称:HomemadeOS,代码行数:52,代码来源:bootpack.c
示例5: edition_post_exec
static void
edition_post_exec (void)
{
do_enter_ca_mode ();
/* FIXME: Missing on slang endwin? */
reset_prog_mode ();
flushinp ();
keypad (stdscr, TRUE);
mc_raw_mode ();
channels_up ();
enable_mouse ();
if (alternate_plus_minus)
application_keypad_mode ();
}
开发者ID:GalaxyTab4,项目名称:workbench,代码行数:16,代码来源:execute.c
示例6: edition_post_exec
static void
edition_post_exec (void)
{
do_enter_ca_mode ();
/* FIXME: Missing on slang endwin? */
tty_reset_prog_mode ();
tty_flush_input ();
tty_keypad (TRUE);
tty_raw_mode ();
channels_up ();
enable_mouse ();
enable_bracketed_paste ();
if (mc_global.tty.alternate_plus_minus)
application_keypad_mode ();
}
开发者ID:LubkaB,项目名称:mc,代码行数:17,代码来源:execute.c
示例7: init_mouse
void init_mouse (void)
{
switch (use_mouse_p) {
#ifdef HAVE_LIBGPM
case MOUSE_NONE:
use_mouse_p = MOUSE_GPM;
break;
#endif /* HAVE_LIBGPM */
case MOUSE_XTERM_NORMAL_TRACKING:
case MOUSE_XTERM_BUTTON_EVENT_TRACKING:
define_sequence (MCKEY_MOUSE, xmouse_seq, MCKEY_NOACTION);
break;
default:
break;
}
enable_mouse ();
}
开发者ID:dborca,项目名称:mc,代码行数:17,代码来源:mouse.c
示例8: mouse
void mouse(void){
struct BOOTINFO *binfo = (struct BOOTINFO*) ADR_BOOTINFO;
int *buf_mouse;
char *s;
struct FIFO32 fifo_mouse;
struct MOUSE_DEC mdec;
buf_mouse = (int *) memman_alloc(memman, 40);
s = (char *) memman_alloc(memman, 40);
fifo32_init(&fifo_mouse, 10, buf_mouse);
enable_mouse(&fifo_mouse, 0, &mdec);
for(;;){
if(fifo32_status(&fifo_mouse) != 0){
if(mouse_decode(&mdec, fifo32_get(&fifo_mouse)) == 1){
sprintf(s, "X:%d Y:%d BTN:%d Phase:%d", mdec.x, mdec.y, mdec.btn, mdec.phase);
boxfill8(binfo->vram, binfo->scrnx, COL8_FF0000, 16, 64, 220, 80);
putfonts8_asc(binfo->vram, binfo->scrnx, 16, 64, COL8_C6C6C6, s);
}
}
}
}
开发者ID:hanjianqiao0,项目名称:dingus,代码行数:20,代码来源:bootpack.c
示例9: HariMain
void HariMain(void)
{
struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;
char s[40],mcursor[256], keybuf[32];
int mx, my, i;
init_gdtidt();
init_pic();
io_sti();
fifo8_init(&keyfifo, 32, keybuf);
io_out8(PIC0_IMR, 0xf9);
io_out8(PIC1_IMR, 0xef);
init_keyboard();
init_palette();
init_screen8(binfo->vram, binfo->scrnx, binfo->scrny);
mx = (binfo->scrnx - 16) / 2;
my = (binfo->scrny - 28 - 16) / 2;
init_mouse_cursor8(mcursor, COL8_008484);
putblock8_8(binfo->vram, binfo->scrnx, 16, 16, mx, my, mcursor, 16);
sprintf(s, "(%d, %d)", mx, my);
putfonts8_asc(binfo->vram, binfo->scrnx, 0, 0, COL8_FFFFFF, s);
enable_mouse();
for (;;) {
io_cli();
if(fifo8_status(&keyfifo) == 0){
io_stihlt();
} else{
i = fifo8_get(&keyfifo);
io_sti();
sprintf(s, "%02X", i);
boxfill8(binfo->vram, binfo->scrnx, COL8_008484, 0, 16, 15, 31);
putfonts8_asc(binfo->vram, binfo->scrnx, 0, 16, COL8_FFFFFF, s);
}
}
}
开发者ID:SeanHAu,项目名称:OSASK,代码行数:39,代码来源:bootpack.c
示例10: enable_mouse
void Mouse::Initialize() {
enable_mouse(mousefifo,mousedata0);
io_out8(PIC1_IMR, 0xef); //マウスを許可(11101111)
}
开发者ID:bobuhiro11,项目名称:ownos,代码行数:4,代码来源:mouse.cpp
示例11: HariMain
void HariMain(void)
{
BOOTINFO *binfo = (BOOTINFO *) ADR_BOOTINFO;
MOUSE_DECODE mouse_dec;
MEMMANAGE *memmanage = (MEMMANAGE *)MEMMANAGE_ADDR;
LAYER_MANAGE *layer_manage;
LAYER *layer_bg, *layer_mouse;
char mCursor[mCursorWidth * mCursorHeight];
unsigned char *mBg; //屏幕的大背景会在init_screen的时候画出来,这里只需要一个指向它的指针即可
unsigned char strings[40], keyBuffer[32], mouseBuffer[128],i;
unsigned int memory_total;
int j;
int mCursorX, mCursorY; //鼠标光标显示位置的横纵坐标
mCursorX = binfo->scrnx / 2;
mCursorY = (binfo->scrny - 28)/ 2; //减去下方任务栏的高度
/*内存检查*/
i = memtest(0x00400000, 0xbfffffff) / (1024 * 1024); //i的单位是MB
/*内存管理*/
memmanage_init(memmanage);
memory_total = i * 1024 * 1024;
memmanage_free_4K(memmanage, 0x00001000, 0x0009e000);
memmanage_free_4K(memmanage, 0x00400000, memory_total - 0x00400000);
/*初始化接收中断的缓冲区*/
init_fifo(&keyFIFO, 32, keyBuffer); //初始化keyFIFO缓冲区
init_fifo(&mouseFIFO, 128, mouseBuffer); //初始化mouseFIFO缓冲区
/*初始化GDT和IDT表以及PIC板的数据*/
init_GDTandIDT(); //初始化GDT和IDT表
init_pic(); //初始化PIC主从板数据
io_sti(); //开始接收中断
/*若要接收鼠标中断需要两个步骤,首先必须使鼠标控制电路(就是键盘控制电路的一部分)有效,然后要使鼠标本身有效*/
init_keyboard(); //初始化键盘控制器电路
enable_mouse(&mouse_dec); //激活鼠标
/*开放鼠标和键盘中断*/
io_out8(PIC0_IMR, 0xf9); /* PIC0开发IRQ(11111001),开放IRQ1和IRQ2,键盘中断和从PIC板 */
io_out8(PIC1_IMR, 0xef); /* PIC1开放IRQ(11101111), 开放鼠标中断*/
/*初始化调色板,为图形界面做准备*/
init_palette(); //初始化调色板
/*初始化图层管理,并且初始化鼠标光标和背景的图层*/
layer_manage = layer_man_init(memmanage, binfo->vram, binfo->scrnx, binfo->scrny);
layer_bg = layer_alloc(layer_manage); //为背景分配图层
layer_mouse = layer_alloc(layer_manage); //为鼠标分配图层
mBg = (unsigned char *)memmanage_alloc_4K(memmanage, binfo->scrnx * binfo->scrny); //为背景图形的内容分配内存
layer_set(layer_bg, mBg, binfo->scrnx, binfo->scrny, -1);
layer_set(layer_mouse, mCursor, 16, 16 ,99);
/*初始化整个桌面背景*/
init_screen(mBg, binfo->scrnx, binfo->scrny); //这个时候的init_screen不再是直接画出背景,而是在mBg内存地址中填写好背景内容
layer_slide(layer_manage, layer_bg, 0, 0); //把背景图层从(0,0)坐标开始画
/*初始化鼠标图标*/
init_mouse_cursor(mCursor, 99); //初始化鼠标光标
layer_slide(layer_manage, layer_mouse, mCursorX, mCursorY); //现在显示图形不需要再用displayShape函数了,直接用这个图层管理的绘图函数就行
layer_switch(layer_manage, layer_bg, 0); //把背景图层调为最底层,高度为0
layer_switch(layer_manage, layer_mouse, 1); //鼠标图层调为第二层,高度为1
//layer_all_refresh(layer_manage);
sprintf(strings, "Memory has %dMB", i);
displayStrings_CS(mBg, binfo->scrnx, 0, 64, COL8_FFFFFF,strings);
layer_refresh(layer_manage, layer_bg, 0, 64, binfo->scrnx, 80);
sprintf(strings, "free memory:%dKB",memmanage_total(memmanage) / 1024);
displayStrings_CS(mBg, binfo->scrnx, 120, 64, COL8_FFFFFF,strings); //用字体显示当前内存容量
layer_refresh(layer_manage, layer_bg, 120, 64, binfo->scrnx, 80);
for(;;)
{
io_cli();
if(0 == fifo_status(&keyFIFO) + fifo_status(&mouseFIFO)) //当前没有中断产生
{
io_stihlt(); //当CPU执行hlt指令之后只有外部中断等之情况才会再次唤醒CPU继续工作
}
else
{
if(0 != fifo_status(&keyFIFO))
{
i = fifo_get(&keyFIFO);
io_sti();
sprintf(strings,"%2X",i);
drawRectangle(mBg, binfo->scrnx, COL8_008484, 0, 0, 16,16); //这里的字体不再是卸载vram中,而是写到mBg这个背景内存中,与背景成为一个图层
displayStrings_CS(mBg, binfo->scrnx, 0, 0, COL8_FFFFFF,strings);
layer_refresh(layer_manage, layer_bg, 0, 0, 16, 16); //由于向背景图层中添加了新东西,需要重绘各个图层
}
else if(0 != fifo_status(&mouseFIFO))
{
i = fifo_get(&mouseFIFO);
io_sti();
if(0 != mouse_decode(&mouse_dec, i)) //只有返回值为1的时候才说明成功接收完成一次鼠标的中断
{
/*显示鼠标的信息*/
sprintf(strings,"[lcr %4d %4d]",mouse_dec.x, mouse_dec.y);
if(0 != (mouse_dec.btn & 0x01)) //按下了左键
{
strings[1] = 'L';
}
if(0 != (mouse_dec.btn & 0x02)) //按下了右键
{
strings[3] = 'R';
//.........这里部分代码省略.........
开发者ID:MJason23,项目名称:Self-made-OS,代码行数:101,代码来源:bootpack.c
示例12: HariMain
void HariMain(void)
{
int i;
struct BOOTINFO *binfo = (struct BOOTINFO *)0x0ff0;
int xsize = (*binfo).scrnx;
int ysize = (*binfo).scrny;
int mx = xsize/2;
int my = ysize/2;
int fifobuf[128], keycmd_buf[32];
struct MOUSE_DEC mdec;
unsigned char s[32];
unsigned int memtotal;
struct MEMMAN *memman = (struct MEMMAN *)MEMMAN_ADDR;
int cursor_x, cursor_c;
int key_to = 0, key_shift = 0, key_leds = (binfo->leds >> 4) & 7, keycmd_wait = -1;
struct SHTCTL *shtctl;
struct SHEET *sht_back, *sht_mouse, *sht_win, *sht_cons;
unsigned char *buf_back, buf_mouse[256], *buf_win, *buf_cons;
struct TIMER *timer;
struct FIFO32 fifo, keycmd;
struct CONSOLE *cons;
struct TASK *task_a, *task_cons;
static char keytable0[0x80] = {
0, 0, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '^', 0, 0,
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '@', '[', 0, 0, 'A', 'S',
'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', ':', 0, 0, ']', 'Z', 'X', 'C', 'V',
'B', 'N', 'M', ',', '.', '/', 0, '*', 0, ' ', 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, '7', '8', '9', '-', '4', '5', '6', '+', '1',
'2', '3', '0', '.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0x5c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x5c, 0, 0
};
static char keytable1[0x80] = {
0, 0, '!', 0x22, '#', '$', '%', '&', 0x27, '(', ')', '~', '=', '~', 0x08, 0,
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '`', '{', 0, 0, 'A', 'S',
'D', 'F', 'G', 'H', 'J', 'K', 'L', '+', '*', 0, 0, '}', 'Z', 'X', 'C', 'V',
'B', 'N', 'M', '<', '>', '?', 0, '*', 0, ' ', 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, '7', '8', '9', '-', '4', '5', '6', '+', '1',
'2', '3', '0', '.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, '_', 0, 0, 0, 0, 0, 0, 0, 0, 0, '|', 0, 0
};
init_gdtidt ();
init_pic ();
io_sti ();
fifo32_init(&fifo, 32, fifobuf, 0);
fifo32_init(&keycmd, 32, keycmd_buf, 0);
init_pit();
io_out8(PIC0_IMR, 0xf8); /* Allow PIT and Keyboard (11111000) */
io_out8(PIC1_IMR, 0xef); /* Allow Mouse (11101111) */
init_keyboard (&fifo, 256);
enable_mouse (&fifo, 512, &mdec);
timer = timer_alloc();
timer_init(timer, &fifo, 1);
timer_settime(timer, 50);
memtotal = memtest(0x00400000, 0xbfffffff);
memman_init (memman);
memman_free (memman, 0x00001000, 0x009e000); /* 0x00001000 - 0x0009efff */
memman_free (memman, 0x00400000, memtotal - 0x00400000);
init_pallete();
shtctl = shtctl_init (memman, binfo->vram, binfo->scrnx, binfo->scrny);
sht_back = sheet_alloc(shtctl);
sht_mouse = sheet_alloc(shtctl);
sht_win = sheet_alloc(shtctl);
buf_back = (unsigned char *)memman_alloc_4k (memman, binfo->scrnx * binfo->scrny);
buf_win = (unsigned char *)memman_alloc_4k (memman, 160 * 52);
sheet_setbuf (sht_back, buf_back, binfo->scrnx, binfo->scrny, -1);
sheet_setbuf (sht_mouse, buf_mouse, 16, 16, 99);
sheet_setbuf (sht_win, buf_win, 160, 52, -1);
init_screen (buf_back, xsize, ysize);
init_mouse_cursor8 (buf_mouse, 99);
make_window8(buf_win, 160, 52, "task_a", 1);
// sprintf (s, "(%d, %d)", mx, my);
// putfonts8_asc (buf_back, binfo->scrnx, 0, 0, COL8_FFFFFF, s);
// sprintf (s, "Memory %dMB, free : %dKB",
// memtotal / (1024 * 1024), memman_total(memman) / 1024);
// putfonts8_asc(buf_back, binfo->scrnx, 0, 32, COL8_FFFFFF, s);
make_textbox8 (sht_win, 8, 28, 144, 16, COL8_FFFFFF);
cursor_x = 8;
cursor_c = COL8_FFFFFF;
//=====================
// Task Settings
//=====================
task_a = task_init(memman);
fifo.task = task_a;
task_run (task_a, 1, 0);
/* console sheet */
//.........这里部分代码省略.........
开发者ID:msyksphinz,项目名称:sicp_exercise,代码行数:101,代码来源:bootpack.c
示例13: HariMain
void HariMain(void)
{
struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;
struct SHTCTL *shtctl;
char s[40];
struct FIFO32 fifo, keycmd;
int fifobuf[128], keycmd_buf[32];
int mx, my, i, new_mx = -1, new_my = 0, new_wx = 0x7fffffff, new_wy = 0;
unsigned int memtotal;
struct MOUSE_DEC mdec;
struct MEMMAN *memman = (struct MEMMAN *) MEMMAN_ADDR;
unsigned char *buf_back, buf_mouse[256];
struct SHEET *sht_back, *sht_mouse;
struct TASK *task_a, *task;
static char keytable0[0x80] = {
0, 0, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '^', 0x08, 0,
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '@', '[', 0x0a, 0, 'A', 'S',
'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', ':', 0, 0, ']', 'Z', 'X', 'C', 'V',
'B', 'N', 'M', ',', '.', '/', 0, '*', 0, ' ', 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, '7', '8', '9', '-', '4', '5', '6', '+', '1',
'2', '3', '0', '.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0x5c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x5c, 0, 0
};
static char keytable1[0x80] = {
0, 0, '!', 0x22, '#', '$', '%', '&', 0x27, '(', ')', '~', '=', '~', 0x08, 0,
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '`', '{', 0x0a, 0, 'A', 'S',
'D', 'F', 'G', 'H', 'J', 'K', 'L', '+', '*', 0, 0, '}', 'Z', 'X', 'C', 'V',
'B', 'N', 'M', '<', '>', '?', 0, '*', 0, ' ', 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, '7', '8', '9', '-', '4', '5', '6', '+', '1',
'2', '3', '0', '.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, '_', 0, 0, 0, 0, 0, 0, 0, 0, 0, '|', 0, 0
};
int key_shift = 0, key_leds = (binfo->leds >> 4) & 7, keycmd_wait = -1;
int j, x, y, mmx = -1, mmy = -1, mmx2 = 0;
struct SHEET *sht = 0, *key_win;
init_gdtidt();
init_pic();
io_sti(); /* IDT/PICの初期化が終わったのでCPUの割り込み禁止を解除 */
fifo32_init(&fifo, 128, fifobuf, 0);
*((int *) 0x0fec) = (int) &fifo;
init_pit();
init_keyboard(&fifo, 256);
enable_mouse(&fifo, 512, &mdec);
io_out8(PIC0_IMR, 0xf8); /* PITとPIC1とキーボードを許可(11111000) */
io_out8(PIC1_IMR, 0xef); /* マウスを許可(11101111) */
fifo32_init(&keycmd, 32, keycmd_buf, 0);
memtotal = memtest(0x00400000, 0xbfffffff);
memman_init(memman);
memman_free(memman, 0x00001000, 0x0009e000); /* 0x00001000 - 0x0009efff */
memman_free(memman, 0x00400000, memtotal - 0x00400000);
init_palette();
shtctl = shtctl_init(memman, binfo->vram, binfo->scrnx, binfo->scrny);
task_a = task_init(memman);
fifo.task = task_a;
task_run(task_a, 1, 2);
*((int *) 0x0fe4) = (int) shtctl;
/* sht_back */
sht_back = sheet_alloc(shtctl);
buf_back = (unsigned char *) memman_alloc_4k(memman, binfo->scrnx * binfo->scrny);
sheet_setbuf(sht_back, buf_back, binfo->scrnx, binfo->scrny, -1); /* 透明色なし */
init_screen8(buf_back, binfo->scrnx, binfo->scrny);
/* sht_cons */
key_win = open_console(shtctl, memtotal);
/* sht_mouse */
sht_mouse = sheet_alloc(shtctl);
sheet_setbuf(sht_mouse, buf_mouse, 16, 16, 99);
init_mouse_cursor8(buf_mouse, 99);
mx = (binfo->scrnx - 16) / 2; /* 画面中央になるように座標計算 */
my = (binfo->scrny - 28 - 16) / 2;
sheet_slide(sht_back, 0, 0);
sheet_slide(key_win, 32, 4);
sheet_slide(sht_mouse, mx, my);
sheet_updown(sht_back, 0);
sheet_updown(key_win, 1);
sheet_updown(sht_mouse, 2);
keywin_on(key_win);
/* 最初にキーボード状態との食い違いがないように、設定しておくことにする */
fifo32_put(&keycmd, KEYCMD_LED);
fifo32_put(&keycmd, key_leds);
for (;;) {
if (fifo32_status(&keycmd) > 0 && keycmd_wait < 0) {
/* キーボードコントローラに送るデータがあれば、送る */
keycmd_wait = fifo32_get(&keycmd);
wait_KBC_sendready();
io_out8(PORT_KEYDAT, keycmd_wait);
}
io_cli();
if (fifo32_status(&fifo) == 0) {
/* FIFOがからっぽになったので、保留している描画があれば実行する */
//.........这里部分代码省略.........
开发者ID:FuDesign2008,项目名称:mess,代码行数:101,代码来源:bootpack.c
示例14: HariMain
void HariMain(void)
{
struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;
struct FIFO32 fifo;
char s[40];
int fifobuf[128];
struct TIMER *timer, *timer2, *timer3;
int mx, my, i, cursor_x, cursor_c, task_b_esp;
unsigned int memtotal;
struct MOUSE_DEC mdec;
struct MEMMAN *memman = (struct MEMMAN *) MEMMAN_ADDR;
struct SHTCTL *shtctl;
struct SHEET *sht_back, *sht_mouse, *sht_win;
unsigned char *buf_back, buf_mouse[256], *buf_win;
static char keytable[0x54] = {
0, 0, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '^', 0, 0,
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '@', '[', 0, 0, 'A', 'S',
'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', ':', 0, 0, ']', 'Z', 'X', 'C', 'V',
'B', 'N', 'M', ',', '.', '/', 0, '*', 0, ' ', 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, '7', '8', '9', '-', '4', '5', '6', '+', '1',
'2', '3', '0', '.'
};
struct TSS32 tss_a, tss_b;
struct SEGMENT_DESCRIPTOR *gdt = (struct SEGMENT_DESCRIPTOR *) ADR_GDT;
init_gdtidt();
init_pic();
io_sti();
fifo32_init(&fifo, 128, fifobuf);
init_pit();
init_keyboard(&fifo, 256);
enable_mouse(&fifo, 512, &mdec);
io_out8(PIC0_IMR, 0xf8);
io_out8(PIC1_IMR, 0xef);
timer = timer_alloc();
timer_init(timer, &fifo, 10);
timer_settime(timer, 1000);
timer2 = timer_alloc();
timer_init(timer2, &fifo, 3);
timer_settime(timer2, 300);
timer3 = timer_alloc();
timer_init(timer3, &fifo, 1);
timer_settime(timer3, 50);
memtotal = memtest(0x00400000, 0xbfffffff);
memman_init(memman);
memman_free(memman, 0x00001000, 0x0009e000);
memman_free(memman, 0x00400000, memtotal - 0x00400000);
init_palette();
shtctl = shtctl_init(memman, binfo->vram, binfo->scrnx, binfo->scrny);
sht_back = sheet_alloc(shtctl);
sht_mouse = sheet_alloc(shtctl);
sht_win = sheet_alloc(shtctl);
buf_back = (unsigned char *) memman_alloc_4k(memman, binfo->scrnx * binfo->scrny);
buf_win = (unsigned char *) memman_alloc_4k(memman, 160 * 52);
sheet_setbuf(sht_back, buf_back, binfo->scrnx, binfo->scrny, -1);
sheet_setbuf(sht_mouse, buf_mouse, 16, 16, 99);
sheet_setbuf(sht_win, buf_win, 160, 52, -1);
init_screen8(buf_back, binfo->scrnx, binfo->scrny);
init_mouse_cursor8(buf_mouse, 99);
make_window8(buf_win, 160, 52, "window");
make_textbox8(sht_win, 8, 28, 144, 16, COL8_FFFFFF);
cursor_x = 8;
cursor_c = COL8_FFFFFF;
sheet_slide(sht_back, 0, 0);
mx = (binfo->scrnx - 16) / 2;
my = (binfo->scrny - 28 - 16) / 2;
sheet_slide(sht_mouse, mx, my);
sheet_slide(sht_win, 80, 72);
sheet_updown(sht_back, 0);
sheet_updown(sht_win, 1);
sheet_updown(sht_mouse, 2);
sprintf(s, "(%3d, %3d)", mx, my);
putfonts8_asc_sht(sht_back, 0, 0, COL8_FFFFFF, COL8_008484, s, 10);
sprintf(s, "memory %dMB free : %dKB" ,
memtotal / (1024 * 1024), memman_total(memman) / 1024);
putfonts8_asc_sht(sht_back, 0, 32, COL8_FFFFFF, COL8_008484, s, 40);
tss_a.ldtr = 0;
tss_a.iomap = 0x40000000;
tss_b.ldtr = 0;
tss_b.iomap = 0x40000000;
set_segmdesc(gdt + 3, 103, (int) &tss_a, AR_TSS32);
set_segmdesc(gdt + 4, 103, (int) &tss_b, AR_TSS32);
load_tr(3 * 8);
task_b_esp = memman_alloc_4k(memman, 64 * 1024) + 64 * 1024;
tss_b.eip = (int) &task_b_main;
tss_b.eflags = 0x00000202;
tss_b.eax = 0;
tss_b.ecx = 0;
tss_b.edx = 0;
tss_b.ebx = 0;
tss_b.esp = task_b_esp;
tss_b.ebp = 0;
tss_b.esi = 0;
tss_b.edi = 0;
tss_b.es = 1 * 8;
tss_b.cs = 2 * 8;
//.........这里部分代码省略.........
开发者ID:LinuxKernelDevelopment,项目名称:30,代码行数:101,代码来源:bootpack.c
示例15: init_display
void
init_display(void)
{
const char *term;
int x, y;
die_callback = done_display;
/* XXX: Restore tty modes and let the OS cleanup the rest! */
if (atexit(done_display))
die("Failed to register done_display");
/* Initialize the curses library */
if (isatty(STDIN_FILENO)) {
cursed = !!initscr();
opt_tty = stdin;
} else {
/* Leave stdin and stdout alone when acting as a pager. */
opt_tty = fopen("/dev/tty", "r+");
if (!opt_tty)
die("Failed to open /dev/tty");
cursed = !!newterm(NULL, opt_tty, opt_tty);
}
if (!cursed)
die("Failed to initialize curses");
nonl(); /* Disable conversion and detect newlines from input. */
cbreak(); /* Take input chars one at a time, no wait for \n */
noecho(); /* Don't echo input */
leaveok(stdscr, FALSE);
if (has_colors())
init_colors();
getmaxyx(stdscr, y, x);
status_win = newwin(1, x, y - 1, 0);
if (!status_win)
die("Failed to create status window");
/* Enable keyboard mapping */
keypad(status_win, TRUE);
wbkgdset(status_win, get_line_attr(NULL, LINE_STATUS));
enable_mouse(opt_mouse);
#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20080119)
set_tabsize(opt_tab_size);
#else
TABSIZE = opt_tab_size;
#endif
term = getenv("XTERM_VERSION") ? NULL : getenv("COLORTERM");
if (term && !strcmp(term, "gnome-terminal")) {
/* In the gnome-terminal-emulator, the message from
* scrolling up one line when impossible followed by
* scrolling down one line causes corruption of the
* status line. This is fixed by calling wclear. */
use_scroll_status_wclear = TRUE;
use_scroll_redrawwin = FALSE;
} else if (term && !strcmp(term, "xrvt-xpm")) {
/* No problems with full optimizations in xrvt-(unicode)
* and aterm. */
use_scroll_status_wclear = use_scroll_redrawwin = FALSE;
} else {
/* When scrolling in (u)xterm the last line in the
* scrolling direction will update slowly. */
use_scroll_redrawwin = TRUE;
use_scroll_status_wclear = FALSE;
}
}
开发者ID:JakeSc,项目名称:tig,代码行数:71,代码来源:display.c
示例16: HariMain
void HariMain(void)
{
struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;
struct SHTCTL *shtctl;
char s[40];
struct FIFO32 fifo, keycmd;
int fifobuf[128], keycmd_buf[32];
int mx, my, i, cursor_x, cursor_c;
unsigned int memtotal;
struct MOUSE_DEC mdec;
struct MEMMAN *memman = (struct MEMMAN *) MEMMAN_ADDR;
unsigned char *buf_back, buf_mouse[256], *buf_win, *buf_cons;
struct SHEET *sht_back, *sht_mouse, *sht_win, *sht_cons;
struct TASK *task_a, *task_cons;
struct TIMER *timer;
static char keytable0[0x80] = {
0, 0, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '^', 0, 0,
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '@', '[', 0, 0, 'A', 'S',
'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', ':', 0, 0, ']', 'Z', 'X', 'C', 'V',
'B', 'N', 'M', ',', '.', '/', 0, '*', 0, ' ', 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, '7', '8', '9', '-', '4', '5', '6', '+', '1',
'2', '3', '0', '.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0x5c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x5c, 0, 0
};
static char keytable1[0x80] = {
0, 0, '!', 0x22, '#', '$', '%', '&', 0x27, '(', ')', '~', '=', '~', 0, 0,
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '`', '{', 0, 0, 'A', 'S',
'D', 'F', 'G', 'H', 'J', 'K', 'L', '+', '*', 0, 0, '}', 'Z', 'X', 'C', 'V',
'B', 'N', 'M', '<', '>', '?', 0, '*', 0, ' ', 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, '7', '8', '9', '-', '4', '5', '6', '+', '1',
'2', '3', '0', '.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, '_', 0, 0, 0, 0, 0, 0, 0, 0, 0, '|', 0, 0
};
int key_to = 0, key_shift = 0, key_leds = (binfo->leds >> 4) & 7, keycmd_wait = -1;
struct CONSOLE *cons;
init_gdtidt();
init_pic();
io_sti(); /* IDT/PICの初期化が終わったのでCPUの割り込み禁止を解除 */
fifo32_init(&fifo, 128, fifobuf, 0);
init_pit();
init_keyboard(&fifo, 256);
enable_mouse(&fifo, 512, &mdec);
io_out8(PIC0_IMR, 0xf8); /* PITとPIC1とキーボードを許可(11111000) */
io_out8(PIC1_IMR, 0xef); /* マウスを許可(11101111) */
fifo32_init(&keycmd, 32, keycmd_buf, 0);
memtotal = memtest(0x00400000, 0xbfffffff);
memman_init(memman);
memman_free(memman, 0x00001000, 0x0009e000); /* 0x00001000 - 0x0009efff */
memman_free(memman, 0x00400000, memtotal - 0x00400000);
init_palette();
shtctl = shtctl_init(memman, binfo->vram, binfo->scrnx, binfo->scrny);
task_a = task_init(memman);
fifo.task = task_a;
task_run(task_a, 1, 2);
*((int *) 0x0fe4) = (int) shtctl;
/* sht_back */
sht_back = sheet_alloc(shtctl);
buf_back = (unsigned char *) memman_alloc_4k(memman, binfo->scrnx * binfo->scrny);
sheet_setbuf(sht_back, buf_back, binfo->scrnx, binfo->scrny, -1); /* 透明色なし */
init_screen8(buf_back, binfo->scrnx, binfo->scrny);
/* sht_cons */
sht_cons = sheet_alloc(shtctl);
buf_cons = (unsigned char *) memman_alloc_4k(memman, 256 * 165);
sheet_setbuf(sht_cons, buf_cons, 256, 165, -1); /* 透明色なし */
make_window8(buf_cons, 256, 165, "console", 0);
make_textbox8(sht_cons, 8, 28, 240, 128, COL8_000000);
task_cons = task_alloc();
task_cons->tss.esp = memman_alloc_4k(memman, 64 * 1024) + 64 * 1024 - 12;
task_cons->tss.eip = (int) &console_task;
task_cons->tss.es = 1 * 8;
task_cons->tss.cs = 2 * 8;
task_cons->tss.ss = 1 * 8;
task_cons->tss.ds = 1 * 8;
task_cons->tss.fs = 1 * 8;
task_cons->tss.gs = 1 * 8;
*((int *) (task_cons->tss.esp + 4)) = (int) sht_cons;
*((int *) (task_cons->tss.esp + 8)) = memtotal;
task_run(task_cons, 2, 2); /* level=2, priority=2 */
/* sht_win */
sht_win = sheet_alloc(shtctl);
buf_win = (unsigned char *) memman_alloc_4k(memman, 160 * 52);
sheet_setbuf(sht_win, buf_win, 144, 52, -1); /* 透明色なし */
make_window8(buf_win, 144, 52, "task_a", 1);
make_textbox8(sht_win, 8, 28, 128, 16, COL8_FFFFFF);
cursor_x = 8;
cursor_c = COL8_FFFFFF;
timer = timer_alloc();
timer_init(timer, &fifo, 1);
timer_settime(timer, 50);
/* sht_mouse */
sht_mouse = sheet_alloc(shtctl);
//.........这里部分代码省略.........
开发者ID:bigpussy,项目名称:harib_os_src,代码行数:101,代码来源:bootpack.c
示例17: HariMain
void HariMain(void)
{
struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;
char s[40], keybuf[32], mousebuf[128];
int mx, my, i;
unsigned int memtotal, count = 0;
struct MOUSE_DEC mdec;
struct MEMMAN *memman = (struct MEMMAN *) MEMMAN_ADDR;
struct SHTCTL *shtctl;
struct SHEET *sht_back, *sht_mouse, *sht_win;
unsigned char *buf_back, buf_mouse[256], *buf_win;
init_gdtidt();
init_pic();
io_sti(); /* IDT/PICの初期化が終わったのでCPUの割り込み禁止を解除 */
fifo8_init(&keyfifo, 32, keybuf);
fifo8_init(&mousefifo, 128, mousebuf);
io_out8(PIC0_IMR, 0xf9); /* PIC1とキーボードを許可(11111001) */
io_out8(PIC1_IMR, 0xef); /* マウスを許可(11101111) */
init_keyboard();
enable_mouse(&mdec);
memtotal = memtest(0x00400000, 0xbfffffff);
memman_init(memman);
memman_free(memman, 0x00001000, 0x0009e000); /* 0x00001000 - 0x0009efff */
memman_free(memman, 0x00400000, memtotal - 0x00400000);
init_palette();
shtctl = shtctl_init(memman, binfo->vram, binfo->scrnx, binfo->scrny);
sht_back = sheet_alloc(shtctl);
sht_mouse = sheet_alloc(shtctl);
sht_win = sheet_alloc(shtctl);
buf_back = (unsigned char *) memman_alloc_4k(memman, binfo->scrnx * binfo->scrny);
buf_win = (unsigned char *) memman_alloc_4k(memman, 160 * 52);
sheet_setbuf(sht_back, buf_back, binfo->scrnx, binfo->scrny, -1); /* 透明色なし */
sheet_setbuf(sht_mouse, buf_mouse, 16, 16, 99);
sheet_setbuf(sht_win, buf_win, 160, 52, -1); /* 透明色なし */
init_screen8(buf_back, binfo->scrnx, binfo->scrny);
init_mouse_cursor8(buf_mouse, 99);
make_window8(buf_win, 160, 52, "counter");
sheet_slide(sht_back, 0, 0);
mx = (binfo->scrnx - 16) / 2; /* 画面中央になるように座標計算 */
my = (binfo->scrny - 28 - 16) / 2;
sheet_slide(sht_mouse, mx, my);
sheet_slide(sht_win, 80, 72);
sheet_updown(sht_back, 0);
sheet_updown(sht_win, 1);
sheet_updown(sht_mouse, 2);
sprintf(s, "(%3d, %3d)", mx, my);
putfonts8_asc(buf_back, binfo->scrnx, 0, 0, COL8_FFFFFF, s);
sprintf(s, "memory %dMB free : %dKB",
memtotal / (1024 * 1024), memman_total(memman) / 1024);
putfonts8_asc(buf_back, binfo->scrnx, 0, 32, COL8_FFFFFF, s);
sheet_refresh(sht_back, 0, 0, binfo->scrnx, 48);
for (;;) {
count++;
sprintf(s, "%010d", count);
boxfill8(buf_win, 160, COL8_C6C6C6, 40, 28, 119, 43);
putfonts8_asc(buf_win, 160, 40, 28, COL8_000000, s);
sheet_refresh(sht_win, 40, 28, 120, 44);
io_cli();
if (fifo8_status(&keyfifo) + fifo8_status(&mousefifo) == 0) {
io_sti();
} else {
if (fifo8_status(&keyfifo) != 0) {
i = fifo8_get(&keyfifo);
io_sti();
sprintf(s, "%02X", i);
boxfill8(buf_back, binfo->scrnx, COL8_008484, 0, 16, 15, 31);
putfonts8_asc(buf_back, binfo->scrnx, 0, 16, COL8_FFFFFF, s);
sheet_refresh(sht_back, 0, 16, 16, 32);
} else if (fifo8_status(&mousefifo) != 0) {
i = fifo8_get(&mousefifo);
io_sti();
if (mouse_decode(&mdec, i) != 0) {
/* データが3バイト揃ったので表示 */
sprintf(s, "[lcr %4d %4d]", mdec.x, mdec.y);
if ((mdec.btn & 0x01) != 0) {
s[1] = 'L';
}
if ((mdec.btn & 0x02) != 0) {
s[3] = 'R';
}
if ((mdec.btn & 0x04) != 0) {
s[2] = 'C';
}
boxfill8(buf_back, binfo->scrnx, COL8_008484, 32, 16, 32 + 15 * 8 - 1, 31);
putfonts8_asc(buf_back, binfo->scrnx, 32, 16, COL8_FFFFFF, s);
sheet_refresh(sht_back, 32, 16, 32 + 15 * 8, 32);
/* マウスカーソルの移動 */
mx += mdec.x;
my += mdec.y;
if (mx < 0) {
mx = 0;
}
if (my < 0) {
my = 0;
}
//.........这里部分代码省略.........
开发者ID:siutin,项目名称:self_os,代码行数:101,代码来源:bootpack.c
示例18: HariMain
void HariMain(void)
{
struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;
char s[40], keybuf[32], mousebuf[128];
int mx, my, i;
unsigned int memtotal;
struct MOUSE_DEC mdec;
struct MEMMAN *memman = (struct MEMMAN *) MEMMAN_ADDR;
struct SHTCTL *shtctl;
struct SHEET *sht_back, *sht_mouse;
unsigned char *buf_back, buf_mouse[256];
init_gdtidt();
init_pic();
io_sti(); /* GDT,IDT,PIC*/
fifo8_init(&keyfifo, 32, keybuf);
fifo8_init(&mousefifo, 128, mousebuf);
io_out8(PIC0_IMR, 0xf9); // 11111001,PIC1和IRQ1,
io_out8(PIC1_IMR, 0xef); // 11101111, IRQ12
init_keyboard();
enable_mouse(&mdec);
memtotal = memtest(0x00400000, 0xbfffffff);
memman_init(memman);
memman_free(memman, 0x00001000, 0x0009e000);
memman_free(memman, 0x00400000, memtotal - 0x00400000);
init_palette();
shtctl = shtctl_init(memman, binfo->vram, binfo->scrnx, binfo->scrny);
sht_back = sheet_alloc(shtctl);
sht_mouse = sheet_alloc(shtctl);
buf_back = (unsigned char *) memman_alloc_4k(memman, binfo->scrnx * binfo->scrny);
sheet_setbuf(sht_back, buf_back, binfo->scrnx, binfo->scrny, -1);
sheet_setbuf(sht_mouse, buf_mouse, 16, 16, 99);
init_screen8(buf_back, binfo->scrnx, binfo->scrny);
init_mouse_cursor8(buf_mouse, 99);
sheet_slide(sht_back, 0, 0);
mx = (binfo->scrnx - 16) / 2;
my = (binfo->scrny - 28 - 16) / 2;
sheet_slide(sht_mouse, mx, my);
sheet_updown(sht_back, 0);
sheet_updown(sht_mouse, 1);
sprintf(s, "(0x%x, 0x%x)", mx, my);
putfonts8_asc(buf_back, binfo->scrnx, 0, 0, COL8_FFFFFF, s);
sprintf(s, "memory 0x%xMB, free : 0x%xKB", memtotal / (1024 * 1024), memman_total(memman) / 1024);
putfonts8_asc(buf_back, binfo->scrnx, 0, 32, COL8_FFFFFF, s);
sheet_refresh(sht_back, 0, 0, binfo->scrnx, 48);
for(;;) {
io_cli();
if(0 == fifo8_status(&keyfifo) + fifo8_status(&mousefifo)) {
io_stihlt();
} else {
if(0 != fifo8_status(&keyfifo)) {
i = fifo8_get(&keyfifo);
io_sti();
sprintf(s, "0x%x", i);
boxfill8(buf_back, binfo->scrnx, COL8_008484, 0, 16, 8 * 8 - 1, 31);
putfonts8_asc(buf_back, binfo->scrnx, 0, 16, COL8_FFFFFF, s);
sheet_refresh(sht_back, 0, 16, 8 * 8, 32);
} else if (0 != fifo8_status(&mousefifo)) {
i = fifo8_get(&mousefifo);
io_sti();
if (0 != mouse_decode(&mdec, i)) {
sprintf(s, "[lcr 0x%x 0x%x 0x%x]", mdec.buf[0], mdec.buf[1], mdec.buf[2]);
if (0 != (mdec.btn & 0x01)) {
s[1] = 'L';
}
if (0 != (mdec.btn & 0x02)) {
s[3] = 'R';
}
if (0 != (mdec.btn & 0x04)) {
s[2] = 'C';
}
boxfill8(buf_back, binfo->scrnx, COL8_008484, 64, 16, 64 + 24 * 8 - 1, 31);
putfonts8_asc(buf_back, binfo->scrnx, 64, 16, COL8_FFFFFF, s);
sheet_refresh(sht_back, 64, 16, 64 + 24 * 8, 32);
mx += mdec.x;
my += mdec.y;
if (mx < 0) {
mx = 0;
}
if (my < 0) {
my = 0;
}
if (mx > binfo->scrnx - 1) {
mx = binfo->scrnx - 1;
}
if (my > binfo->scrny - 1) {
my = binfo->scrny - 1;
}
sprintf(s, "(0x%x, 0x%x)", mx, my);
boxfill8(buf_back, binfo->scrnx, COL8_008484, 0, 0, 8 * 16 - 1, 15); /* 隐藏坐标*/
putfonts8_asc(buf_back, binfo->scrnx, 0, 0, COL8_FFFFFF, s); /* 显示坐标*/
sheet_refresh(sht_back, 0, 0, 8 * 16, 16);
sheet_slide(sht_mouse, mx, my); /* 显示鼠标 */
}
}
//.........这里部分代码省略.........
开发者ID:passengerxlt,项目名称:30OS_Ubuntu,代码行数:101,代码来源:bootpack.c
|
请发表评论