Re: [問題] 請問gcc如何模擬鍵盤按鍵?
正常來講, 可以利用 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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章