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 +
Ïà¹ØÎĵµ£º
ÔÚÎҵıʼDZ¾¼ÆËã»úÉÏ£¬WindowsXPÅܵÄÔ½À´Ô½Âý£¬ÖÕÓÚϾöÐÄÖØ×°Ò»±é£¬Ï£ÍûÊÇ×îºóÒ»´Î°²×°WindowsXPÁË¡£¿ÉÊÇÓÖ²»Ì«¸ÊÐÄ£¬¾õµÃ»¨µÄʱ¼ä²»Ì«ÖµµÃ£¬²»¹ý£¬×î½ü¾ÀúÁ˼¸´ÎWindows vs GNU/Linux µÄÕùÂÛ£¬ÓÚÊÇ×Ðϸ¼Ç¼һϰ²×°¹ý³Ì£¬¿ÉÒÔÓп͹ÛÒ»µãµÄÊý¾Ý×ö±È½Ï¡£
ÎҵıʼDZ¾ÊÇDELL INSPIRON 600m£¬pentium-M 1.5GHz, 40GB Ó²ÅÌ, ......
¶ÔÓÚÒ»¸öÎļþÀ´Ëµ£¬ÓÐΨһµÄË÷Òý½ÓµãÓëÖ®¶ÔÓ¦£¬¶ø¶ÔÓÚÒ»¸öË÷Òý½ÓµãºÅ£¬È´¿ÉÒÔÓжà¸öÎļþÃûÓëÖ®¶ÔÓ¦¡£Òò´Ë£¬ÔÚ´ÅÅÌÉϵÄͬһ¸öÎļþ¿ÉÒÔͨ¹ý²»Í¬µÄ·¾¶È¥·ÃÎÊ
¸ÃÎļþ¡£
¡¡¡¡£±.Á¬½ÓÓÐÈíÁ¬½ÓºÍÓ²Á¬½Ó(hard link)Ö®·ÖµÄ£¬ÈíÁ¬½Ó(symbolic
link)ÓֽзûºÅÁ¬½Ó¡£·ûºÅÁ¬½ÓÏ൱ÓÚWindowsϵĿì½Ý·½Ê½¡£
ÈíÁ´½Óʵ¼ÊÉÏÖ»ÊÇÒ»¶ÎÎÄ× ......
Ò»¡¢±¾´ÎÄں˱àÒëÐÂÄÚºËËùÉæ¼°Èí¼þ°æ±¾
“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
......