Re: [問題] 請問gcc如何模擬鍵盤按鍵?

看板LinuxDev作者 (skyter)時間16年前 (2009/05/30 23:25), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
正常來講, 可以利用 pipe 將想要打入的資料餵進去, 比如 test 是你要測試的程式, input 這隻程式負責餵按鍵: ./input|./test 就可以接收來自 test 的輸出. echo "abcde"|./test 也可以讓 test 吃到 "abcde" 的資料. 但是如果你要模擬來自 linux kernel keyboard 的中斷輸入, 那就要進 /usr/src/linux/drivers/char 的某個檔案去 trace . sysrq.c 是過濾來自外部的輸入, 也許你可以往上往下追一下程式碼. 不好意思講得不是很清楚 . 我也不夠熟悉.. 另外相關的操考方向有 expect (TCL 相關用來模擬互動交談式的程式輸入) http://books.google.com.tw/books?id=CpEhgEzp-m0C&printsec=frontcover &dq=expect+oreilly&ei=ek4hSpW0LYrIlQTvg5Ey 還有跟 Pipe 相關 , Unix Network Programming Vol2 Interprocess Communication Pipe and Info 第四十六頁 ※ 引述《oeoe7788 (oeoe)》之銘言: : Dear all, : 請問在linux下用c的話 : 要怎樣可以模擬鍵盤按鍵? : (像MFC有keybd_event) : 我有在網路上看到一個範例但無法使用 : 是有地方寫錯嗎?感謝~ : void simulate_key(int fd,int value) : { : struct input_event event; : event.type = EV_KEY; : event.code = KEY_0; : event.value = value; : gettimeofday(&event.time,0); : if(write(fd,&event,sizeof(event)) < 0){ : printf("simulate key error~~~\n"); : return ; : } : } : int main(void) : { : int fd_kbd = open("/dev/input/event1",O_RDWR); : if(fd_kbd<=0){ : return -1; : } : simulate_key(fd_kbd, 1); : sleep(1); : simulate_key(fd_kbd, 0); : return 0; : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.209.36
文章代碼(AID): #1A8K_sM8 (LinuxDev)
文章代碼(AID): #1A8K_sM8 (LinuxDev)