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

📄 mw_uid_test.cc

📁 一个linux下的根文件系统的源码
💻 CC
字号:
/**/#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <sys/ioctl.h>#include <fcntl.h>#include <rtems/mw_uid.h>#include <rtems/kd.h>static const char *Q_NAME       = "MWQ";#define            Q_MAX_MSGS   128/* * "Select() routine called by the MicroWindows framework to receive events  * from the input devices. */void GsSelect(void){  struct MW_UID_MESSAGE m;  int rc;  /* let's make sure that the type is invalid */  m.type = MV_UID_INVALID;  /* wait up to 100 milisecons for events */  rc = uid_read_message( &m, 100 );  /* return if timed-out or something went wrong */  if( rc < 0 )  {     if( errno != ETIMEDOUT )        printf( " rc= %d, errno=%d\n", rc, errno );     return;  }  /* let's pass the event up to microwindows */  switch( m.type )  {    /* Mouse or Touch Screen event */    case MV_UID_REL_POS:    case MV_UID_ABS_POS:        printf( "Mouse: btns=%X, dx=%d, dy=%d, dz=%d\n",                    m.m.pos.btns, m.m.pos.x, m.m.pos.y, m.m.pos.z );        break;    /* KBD event */    case MV_UID_KBD:        printf( "Kbd: code=%X, modifiers=%X, mode=%d\n",                   (unsigned char )m.m.kbd.code, m.m.kbd.modifiers, m.m.kbd.mode );        break;    /* micro-windows does nothing with those.. */    case MV_UID_TIMER:    case MV_UID_INVALID:    default:       ;  }}extern "C" int close( int );extern "C" int rtems_main(int argc, char **argv){  int status;  printf( "Starting untar file.\n" );   struct MW_UID_MESSAGE m;  int rc;  /* if this is the first time around, create the message queue */  rc = uid_open_queue( Q_NAME, O_CREAT | O_RDWR, Q_MAX_MSGS );  printf( "Open QUEUE=%X\n", rc );  int mouse_fd = open( "/dev/mouse", O_NONBLOCK );  uid_register_device( mouse_fd, Q_NAME );  /* kbd it is already opened */  int kbd_fd = fileno( stdin );  uid_register_device( kbd_fd, Q_NAME );  int old_mode = 0;  /* set keyboard to scanmode */  rc = uid_set_kbd_mode( kbd_fd, MV_KEY_MODE_SCANCODE, &old_mode );  printf( "Kbd OldMode=%X, rc=%d\n", old_mode, rc );  while( TRUE )  {     GsSelect();  }  uid_unregister_device( kbd_fd  );  uid_unregister_device( mouse_fd );  rc = uid_close_queue();  printf( "Close QUEUE=%X\n", rc );  close( mouse_fd );  fprintf(stdout, "About to leave main()\n" );   return 0;}

⌨️ 快捷键说明

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