导航:首页 > 编程系统 > linux键盘编程

linux键盘编程

发布时间:2021-10-11 12:09:37

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;
}

阅读全文

与linux键盘编程相关的资料

热点内容
大数据技术是什么系 浏览:90
怎样在手机上复制文件夹里面的文件夹里 浏览:395
word乱码恢复器 浏览:138
如何保存页面密码 浏览:967
传输文件内容 浏览:22
word文档中的图片 浏览:815
江门哪里好学编程 浏览:185
nike的app怎么登 浏览:590
宽带升级为什么变慢了 浏览:623
宽带连接ipv6无网络访问权限 浏览:581
诛仙手游文件哪些可以清理 浏览:873
javaweb范例宝典pdf 浏览:229
编程需要干什么 浏览:143
文件夹代码加密 浏览:592
win10很容易死机 浏览:347
h5怎么上传投票数据 浏览:710
wps如何设密码 浏览:171
js接口安全域名作用 浏览:634
java字符为空 浏览:355
revit族文件在哪里找 浏览:825

友情链接