Linux Input Device ½é紹: APIs
Linux Input Device ½é紹: APIs
jollen 發±íì¶ April 8, 2009 12:18 PM
Linux µÄ Input Device ÊÇÖØÒªµÄÒ»個 subsystem£¬ÔÚ進ÐÐ實Àý½é紹ǰ£¬ÏÈ´óÂÔÁ˽âÒ»ÏÂÏà關µÄ API¡£
Linux Input Device
input.cÊÇLinuxµÄ”input”驅動³Ìʽ£¬Ö÷ÒªÖ§Ô®鍵盤與»¬ÊóµÄ輸È룻input.c½éÃæÓÐȤµÄµØ·½ÊÇ採ÓÃÁËʼþ£¨event£©µÄ·½Ê½來處Àí輸È룬ÒÔÏÂÊÇinput.c½éÃæÖØÒªµÄ資ÁÏ結構與º¯數£º
* struct input_dev
* void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
* void input_register_device(struct input_dev *);
* void input_unregister_device(struct input_dev *);
* void input_register_handler(struct input_handler *);
* void input_unregister_handler(struct input_handler *);
Linux µÄinput機ÖÆ¿ÉÓÃ來實×÷¡¸虛擬鍵盤¡¹»ò¡¸虛擬»¬Êó¡¹£¬Ö»Òªºô½Ðinput_event()將輸Èë資ÁÏ發佈給input handler¼´¿É¡£
struct input_devÊÇÓÃ來ÃèÊö輸ÈëʼþµÄÖØÒª資ÁÏ結構£¬ÆäÔÐÍÐû¸æÈçÏ£º
struct input_dev {
void *private;
int number;
char *name;
unsigned short idbus;
unsigned short idvendor;
unsigned short idproduct;
unsigned short idversion;
unsigned long evbit[NBITS(EV_MAX)];
unsigned long keybit[NBITS(KEY_MAX)];
unsigned long relbit[NBITS(REL_MAX)];
unsigned long absbit[NBITS(ABS_MAX)];
unsigned long mscbit[NBITS(MSC_MAX)];
unsigned long ledbit[NBITS(LED_MAX)];
unsigned long sndbit[NBITS(SND_MAX)];
unsigned long ffbit[NBITS(FF_MAX)];
int ff_effects_max;
unsigned int keycodemax;
unsigned int keycodesize;
void *keycode;
unsigned int repeat_key;
struct timer_list timer;
int abs[ABS_MAX + 1];
int rep[REP_MAX + 1];
unsigned long key[NBITS(KEY_MAX)];
unsigned long led[NBITS(LED_MAX)];
unsigned long snd[NBITS(SND_MAX)];
int absmax[ABS_MAX + 1];
int absmin[ABS_MAX + 1];
int absfuzz[ABS_MAX + 1];
int absflat[ABS_MAX +
Ïà¹ØÎĵµ£º
ÏÈÀ´Á˽âÒ»ÏÂÎļþÊôÐÔ£¬
ÔÚshell»·¾³ÀïÊäÈ룺ls -l ¿ÉÒԲ鿴µ±Ç°Ä¿Â¼Îļþ¡£È磺
drwxr-xr-x 2 nsf users 1024 12-10 17:37 ÏÂÔØÎļþ±¸·Ý
·Ö±ð¶ÔÓ¦µÄÊÇ£º
ÎļþÊôÐÔ Á¬½ÓÊý ÎļþÓµÓÐÕß ËùÊôȺ×é Îļþ´óС ÎļþÐÞ¸Äʱ¼ä ÎļþÃû
ÕâÀïrÊǿɶÁ£¬w¿Éд,x ¿ÉÖ´ÐУ¬ÆäÖÐÎļþÊôÐÔ·ÖΪËĶΣ¬---- --- --- 10¸öλÖÃ
ÀýÈ磺
¡¡¡¡d ......
ʹÓÃ80x86´¦ÀíÆ÷½øÐÐÑ°Ö·Ê±Ç£Éæµ½ÈýÖÖ²»Í¬µÄµØÖ·£¬Æä¹ØÏµÈçÏÂËùʾ
Âß¼µØÖ·------------------->ÏßÐÔµØÖ·-------------------------->ÎïÀíµØÖ·
£¨·Ö¶Î£©   ......
Ò»¡¢±¾´ÎÄں˱àÒëÐÂÄÚºËËùÉæ¼°Èí¼þ°æ±¾
“gcc –version”¿É²éѰGCC°æ±¾------4.3.2 20081105£¨Red Hat 4.3.2-7£©
“make –v”¿É²éѯ Gnu make°æ±¾-----3.81
“ld –V£¨v£©¿É²éѯGNU ld°æ±¾-----2.18.50.0.9-7¡£f c10 20080822
“fdformat --version”ÃüÁî ......
Linux·¢Ðа汾֮¼äµÄ²î±ðÆäʵºÜÉÙ£¬²î±ðÖ÷Òª±íÏÖÔÚϵͳ¹ÜÀíµÄÌØÉ«¹¤¾ßÒÔ¼°Èí¼þ°ü¹ÜÀí·½Ê½µÄ²»Í¬£¬³ý´ËÖ®Í⣬ûÓÐʲô´óµÄ²î±ð£» ±ÈÈçFedoraÈí¼þ°ü¹ÜÀí¹¤¾ßÊÇrpm£¬¶øSlackwareÊÇpkgtool »òinstallpkgµÈ£»
ÑÔ¹éÕý´«£¬ÎÒÃǽÓ×Å˵Îļþϵͳ×éÖ¯½á¹¹¡£
/ LinuxÎļþϵͳµÄÈë¿Ú£¬Ò²ÊÇ´¦ÓÚ×î¸ßÒ»¼¶µÄĿ¼£»
/bin »ù´¡ÏµÍ³ËùÐèÒªµ ......
LinuxÔ´Âë°²×°Subversion
ÏÈ´ÓsubversionµÄ¹Ù·½ÍøÕ¾ÏÂÔØÔ´Â룬subversion.apache.org
½âѹ¿ªµ½subversion-xxx È»ºóconfigure
È»ºóÒ»°ã¾ÍÊÇÕÒ²»µ½Ä³Ä³¿âµÄ´íÎó£¬ÒÔÏÂ˵Ã÷
1.ÕÒ²»µ½sqlite3
´ÓsqliteÍøÕ¾ÉÏÏÂÔØsqlite3µÄÔ´Â룬Ȼºó°Ñsqlite3.c¿½±´µ½ subversion-xxx/sqlite-amalgamation/sqlite3.c
2.ÕÒ²»µ½apr
......