#include <stdio.h>

#include <dos.h>

#include <conio.h>


int check_mouse_driver()

{

    union REGS regs;

    regs.x.ax = 0x00;

    int86(0x33, &regs, &regs);

    int mouse_vector = regs.h.ch;

    return mouse_vector != 0;

}


const char* mouse_types[] =

{

    "Not exist",

    "Bus Mouse",

    "Serial Mouse",

    "InPort Mouse",

    "PS/2 Mouse",

    "HP Mouse",

};


const char* get_mouse_info( int* major, int* minor )

{

    union REGS regs;

    regs.x.ax = 0x24;

    int86(0x33, &regs, &regs);

    *major = regs.h.bh;

    *minor = regs.h.bl;

    return mouse_types[ regs.h.ch ];

}


const char* keyboard_types[] =

{

   "101 / 103 key",

   "84 / 86 key",

};


const char* get_keyboard_type_string()

{

    unsigned char info = *(unsigned char*)0x000000496;

    return keyboard_types[ ( info & 0x10 ) >> 4 ];

}


int main()

{

    int major, minor;

    clrscr();

    printf( "Mouse information\\n" );

    printf( "Mouse driver : %s\\n", check_mouse_driver() ? "exist": "not exist" );

    printf( "Mouse driver type : %s\\n", get_mouse_info( &major, &minor ) );

    printf( "Mouse driver version : %d.%d\\n", major, minor );

    printf( "Keyboard kind : %s\\n", get_keyboard_type_string() );

    getch();

    return 0;

}


개 그지 같은 코드 올려놓고 무슨 배짱으로 뻐대냐?