当前位置: 技术问答>linux和unix
linux下c语言实现鼠标响应事件
来源: 互联网 发布时间:2016-05-28
本文导语: 我在实现一个more命令,当实现按键ctrl+q这些按键时,如果产生消息响应。麻烦高手指点小,在线等··· | 捕捉键盘事件很麻烦,你完全可以用快捷键来做。 GTK+中实现的快捷键最简单...
我在实现一个more命令,当实现按键ctrl+q这些按键时,如果产生消息响应。麻烦高手指点小,在线等···
|
捕捉键盘事件很麻烦,你完全可以用快捷键来做。
GTK+中实现的快捷键最简单的方法是通过GtkAccelGroup对象,它可以设置多组与窗体构件相关的快捷键。当用户按下某一组快捷键时,与该快捷键连接的信号会被抛出。
GtkAccelGroup* gtk_accel_group_new(void);
void gtk_window_add_accel_group(GtkWindow *window, // 与快捷键连接的窗体构件
GtkAccelGroup *accel_group); // 被连接的GtkAccelGroup对象
void gtk_widget_add_accelerator(GtkWidget *widget, // 与快捷键连接的构件
const gchar *accel_signal, // 与快捷键连接的信号
GtkAccelGroup *accel_group, // 被连接的GtkAccelGroup对象
guint accel_key, // 快捷键
GdkModifierType accel_mods, // 控制键
GtkAccelFlags accel_flags); // 是否在快捷标签中显示快捷键的标志
GTK+中实现的快捷键最简单的方法是通过GtkAccelGroup对象,它可以设置多组与窗体构件相关的快捷键。当用户按下某一组快捷键时,与该快捷键连接的信号会被抛出。
GtkAccelGroup* gtk_accel_group_new(void);
void gtk_window_add_accel_group(GtkWindow *window, // 与快捷键连接的窗体构件
GtkAccelGroup *accel_group); // 被连接的GtkAccelGroup对象
void gtk_widget_add_accelerator(GtkWidget *widget, // 与快捷键连接的构件
const gchar *accel_signal, // 与快捷键连接的信号
GtkAccelGroup *accel_group, // 被连接的GtkAccelGroup对象
guint accel_key, // 快捷键
GdkModifierType accel_mods, // 控制键
GtkAccelFlags accel_flags); // 是否在快捷标签中显示快捷键的标志
|
gpm是Linux console下的滑鼠驱动程序,它主要提供文字模式下的滑鼠事件处
理。Linux下文字界面的滑鼠几乎都是用gpm来处理。
gpm的文件在gpm原始码的doc目录中,详细的说明可叁考该目录中的文件gpm
programming guide,此处只提供给您KickStart的一些技巧及一些叁考说明。
特别注意到以下的范例,需在console下执行,不可在X Window的 Terminal下
执行。
范例 : gpm_mouse.c
gpm原始码中有一个mev.c的程序,主要用来测试滑鼠状态。事实上,mev.c是个
很好的范例,本范例便是取自mev.c,经过简化修改而来。
#include
#include
#include
#include
void main(int argc,char **argv)
{
fd_set readset;
Gpm_Event event;
Gpm_Connect conn;
conn.eventMask = ~0;
conn.defaultMask = ~GPM_HARD;
conn.maxMod = 0;
conn.minMod = 0;
if (Gpm_Open(&conn,0)==-1) {
printf("Can not open mouse connectionn");
exit(1);
}
while (1) {
FD_ZERO(&readset);
FD_SET(gpm_fd,&readset);
select(gpm_fd+1,&readset,0,0,0);
if (FD_ISSET(gpm_fd,&readset)) {
if (Gpm_GetEvent(&event)>0) {
printf("mouse: event 0x%02X, at %2i %2i (delta %2i %2i),"
"button %i, modifiers 0x%02Xrn",
event.type,
event.x,event.y,
event.dx,event.dy,
event.buttons,
event.modifiers
);
}
}
}
while (Gpm_Close());
}