Ⅰ linux 後台程序從鍵盤獲取一個字元怎麼實現大蝦指點下啊
後台沒有基本輸入輸出,也不能將鍵盤重定向到基本輸入,所以無法獲取
Ⅱ 請問: 用linux鍵盤驅動編寫程序,讀取到實驗箱的鍵盤上的鍵值是字元型
和你寄存器大小一樣長度的無符號數。值是你按的鍵子的掃描碼
c語言底子太差,你確定你理解了c裡面的變數是怎麼一回事
Ⅲ linux下如何編寫模擬用戶鍵盤操作的程序
像按鍵精靈那樣的外掛?
Ⅳ 如何在linux下shell編寫腳本中模擬鍵盤輸入
用來 yes 命令
如 yes 123 可以不停的輸源出 123,你可以用 yes 123 | head -3 輸出三次。
然後你要是要對某個程序做輸入,你用輸入重定向。
如果你說的是應答,那就用 expect,具體的用法就復雜了,自己搜教程系統地學習吧。
Ⅳ linux下c語言編程,怎樣掃描鍵盤輸入並且獲取鍵值
列印編譯的方法有很多,比如在編譯時候將其重定向到另一個文件或者直接打開某一個文件在c中直接將參數寫入該文件
Ⅵ Linux是用什麼程序來處理鍵盤輸入的
linux 處理鍵盤的本質上對 /dev/tty 這個文件進行的操作!
/dev/tty 這是鍵盤和顯示器的設備描述文件,向這個文件寫相當於顯示在用戶的屏幕上,讀就相當於從鍵盤獲取用戶的輸入。
即使你寫的一個程序的輸入輸出被 "<" 或 ">" 重定向,程序還是可以通過這個文件與終端交換數據。
下面為示例代碼:
FILE *file_tty;
int c;
file_tty = fopen("/dev/tty", "r");
if( file_tty == NULL )
exit(1);
/*從tty這里讀,若碰到組合鍵 ctrl + d 則為 EOF,不執行下面的程序*/
if( (c = getc(file_tty) ) != EOF )
{
...
}
Ⅶ linux下C編程,readline庫有監聽鍵盤和修改當前輸入的函數嗎
linux的stdio不支持監聽鍵盤的按鍵,你需要包含擴展的頭文件和庫。
比如包含termios.h,這個頭文件里有一些終端IO的相關擴展。我們使用tcsetattr來設置一個屬性,就可以不用回車就即時監聽到按鍵。
#include<termios.h>
//....其它代碼
intin;
structtermiosnew_settings;
structtermiosstored_settings;
tcgetattr(0,&stored_settings);/*把當前設置保存起來,以供恢復*/
new_settings=stored_settings;
new_settings.c_lflag&=(~ICANON);/*新設置,將canonical模式取消,屏蔽整行緩存*/
new_settings.c_cc[VTIME]=0;/*超時設置為0*/
new_settings.c_cc[VMIN]=1;/*讀取的最小字元數*/
tcsetattr(0,TCSANOW,&new_settings);
in=getchar();/*此時就可以正常的使用getchar()函數來獲取一個輸入了*/
/*此時,你可以使用while,並將獲得的輸入進行處理*/
tcsetattr(0,TCSANOW,&stored_settings);/*恢復原設置*/
另外,你可以考慮使用linux/input.h,使用事件監控的方式,來監控鍵盤事件。這個功能就強大多了,但是,這個操作只適用於本機,也就是說,這個事件,只能監聽到與主機直接相連的鍵盤和滑鼠的事件。如果使用ssh登錄過去的,是監聽不到。關於具體用法,自己搜一下就好。
Ⅷ linux 編程 加入一個新的線程用於處理鍵盤的輸入,並在按鍵為ESC 時終止所有線程
你這個與這個問題是不是同一個版問題權?
http://..com/question/406723397.html?oldq=1&from=evaluateTo#answer-996311626
Ⅸ 求Linux 下模擬鍵盤輸入的代碼(基於GTK 與 Fakekey)
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <fakekey/fakekey.h>
#include <X11/keysym.h>
Display* disp ;
FakeKey *fk;
GtkWidget *win = NULL;
static char *numkeyboard_display[]=
{
"1 ", "2 ", "3 ", "+","4 ", "5 ", "6 ","-", "7 ", "8 ", "9 ", ".", "0 ", "← ", "→ ", "Backspace ", "Delete ", "Enter "
};
static gushort numkeyboard_send[] =
{
XK_1, XK_2, XK_3, XK_plus, XK_4, XK_5, XK_6, XK_minus, XK_7, XK_8, XK_9, XK_period, XK_0, XK_Left, XK_Right, XK_BackSpace, XK_Delete, XK_Return
};
gboolean numbt_release (GtkWidget *widget, GdkEventButton *event,
gpointer user_data)
{
gint i = GPOINTER_TO_UINT(user_data);
fakekey_press_keysym(fk, numkeyboard_send[i], 0);
fakekey_release(fk);
return TRUE;
}
void clicked_callback(GtkButton *button1, GtkWindow *window)
{
gint j;
GtkWidget *button[5];
GtkWidget *vbox = gtk_vbox_new(FALSE, 5);
GtkWidget *hbox[5];
if(win)
{
gtk_widget_destroy (win);
win = NULL ;
}
else
{
win = gtk_window_new (GTK_WINDOW_POPUP);
hbox[0] = gtk_hbox_new(TRUE, 5);
for (j = 0 ; j < 4; j++ ) {
button[0] = gtk_button_new_with_label (numkeyboard_display[j]);
gtk_box_pack_start_defaults(GTK_BOX(hbox[0]), button[0]);
g_signal_connect(G_OBJECT(button[0]), "button-release-event",
G_CALLBACK(numbt_release), GUINT_TO_POINTER (j));
}
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox[0]);
hbox[1] = gtk_hbox_new(TRUE, 5);
for (j = 4 ; j < 8; j++ ) {
button[1] = gtk_button_new_with_label (numkeyboard_display[j]);
gtk_box_pack_start_defaults(GTK_BOX(hbox[1]), button[1]);
g_signal_connect(G_OBJECT(button[1]), "button-release-event",
G_CALLBACK(numbt_release), GUINT_TO_POINTER (j));
}
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox[1]);
hbox[2] = gtk_hbox_new(TRUE, 5);
for (j = 8 ; j < 12; j++ ) {
button[2] = gtk_button_new_with_label (numkeyboard_display[j]);
gtk_box_pack_start_defaults(GTK_BOX(hbox[2]), button[2]);
g_signal_connect(G_OBJECT(button[2]), "button-release-event",
G_CALLBACK(numbt_release), GUINT_TO_POINTER (j));
}
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox[2]);
hbox[3] = gtk_hbox_new(TRUE, 5);
for (j = 12 ; j < 15; j++ ) {
button[3] = gtk_button_new_with_label (numkeyboard_display[j]);
gtk_box_pack_start_defaults(GTK_BOX(hbox[3]), button[3]);
g_signal_connect(G_OBJECT(button[3]), "button-release-event",
G_CALLBACK(numbt_release), GUINT_TO_POINTER (j));
}
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox[3]);
hbox[4] = gtk_hbox_new(TRUE, 5);
for (j = 15 ; j < 18; j++ ) {
button[4] = gtk_button_new_with_label (numkeyboard_display[j]);
gtk_box_pack_start_defaults(GTK_BOX(hbox[4]), button[4]);
g_signal_connect(G_OBJECT(button[4]), "button-release-event",
G_CALLBACK(numbt_release), GUINT_TO_POINTER (j));
}
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox[4]);
gtk_container_add(GTK_CONTAINER(win), vbox);
gtk_window_move (GTK_WINDOW (win), 200, 200); /* 設置窗口位置 */
gtk_widget_show_all(win);
}
}
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *button;
GtkWidget *entry;
GtkWidget *vbox;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "KeyBoard");
gtk_window_set_default_size(GTK_WINDOW(window),400,300);
disp = XOpenDisplay(NULL);//屏幕按鍵函數改成為內核驅動代發
if( disp == NULL )
return 1;
fk = fakekey_init(disp);
vbox = gtk_vbox_new(FALSE, 5);
button = gtk_button_new_with_label("彈出鍵盤");
gtk_widget_set_size_request(GTK_WIDGET(button),400,250);
gtk_box_pack_start_defaults(GTK_BOX(vbox), button);
entry = gtk_entry_new();
gtk_box_pack_start_defaults(GTK_BOX(vbox), entry);
gtk_widget_set_size_request(GTK_WIDGET(entry),400,50);
g_signal_connect(GTK_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(GTK_OBJECT(button), "clicked",G_CALLBACK(clicked_callback), window);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Ⅹ 在LINUX下鍵盤編程 編寫鍵盤應用程序 能夠獲取鍵盤按鍵
提供一個輸入按鍵應用程序實例,你參考一下。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/select.h>
#include <sys/time.h>
#include <errno.h>
#include <linux/input.h>
int main(void)
{
int buttons_fd;
int key_value,i=0,count;
struct input_event ev_key;
buttons_fd = open("/dev/input/event0", O_RDWR);
if (buttons_fd < 0) {
perror("open device buttons");
exit(1);
}
for (;;) {
count = read(buttons_fd,&ev_key,sizeof(struct input_event));
for(i=0; i<(int)count/sizeof(struct input_event); i++)
if(EV_KEY==ev_key.type)
printf("type:%d,code:%d,value:%d\n", ev_key.type,ev_key.code-1,ev_key.value);
if(EV_SYN==ev_key.type)
printf("syn event\n\n");
}
close(buttons_fd);
return 0;
}