首页 > 其他分享 >GTK进阶学习:键盘事件

GTK进阶学习:键盘事件

时间:2022-09-28 21:43:40浏览次数:58  
标签:GTK 进阶 gtk 键盘 window 键值 key event


键盘事件,可以理解为操作键盘的动作。对于窗口而言,用户操作键盘,窗口检测到键盘的操作( 产生一个信号 ),然后去做相应处理( 调用其规定的回调函数 ),即可认为是键盘事件,还是信号与回调函数的知识点。




窗口默认就能接收键盘事件,其中的键值定义在 /usr/include/gtk-2.0/gdk/gdkkeysyms.h 文件里


键盘按下事件产生的信号:key-press-event
键盘释放事件产生的信号:key-release-event


其回调函数的定义如下:

gboolean callback( GtkWidget *widget, GdkEventKey *event, gpointer data )

{

event:键盘事件结构体变量,系统内部的变量,不是用户传参的

event->keyval:获取按下(释放)键盘键值,每个键值对于一个ASCII码

}


注意:可以在 GtkWidget 里找到相应的事件信号,回调函数如何定义应该查看帮助文档。




以下例子为窗口能获取键盘的点击的键值:


#include <gtk/gtk.h>  // 头文件
#include <gdk/gdkkeysyms.h> //键盘头文件,GDK_Up在这声明

// 键盘按下事件处理函数
gboolean deal_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data)
{

switch(event->keyval){ // 键盘键值类型
case GDK_Up:
printf("Up\n");
break;
case GDK_Left:
printf("Left\n");
break;
case GDK_Right:
printf("Right\n");
break;
case GDK_Down:
printf("Down\n");
break;
}

int key = event->keyval; // 获取键盘键值类型
printf("keyval = %d\n", key);

return TRUE;
}

int main( int argc, char *argv[] )
{
gtk_init(&argc, &argv); // 初始化

// 创建顶层窗口
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
// 设置窗口的标题
gtk_window_set_title(GTK_WINDOW(window), "mouse_event");
// 设置窗口在显示器中的位置为居中
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
// 设置窗口的最小大小
gtk_widget_set_size_request(window, 400, 300);
// "destroy" 和 gtk_main_quit 连接
g_signal_connect(window, "destroy",
G_CALLBACK(gtk_main_quit), NULL);

// "key-press-event" 与 deal_key_press 连接
g_signal_connect(window, "key-press-event",
G_CALLBACK(deal_key_press), NULL);

gtk_widget_show_all(window); // 显示窗口全部控件

gtk_main(); // 主事件循环

return 0;
}


标签:GTK,进阶,gtk,键盘,window,键值,key,event
From: https://blog.51cto.com/u_3002289/5720941

相关文章

  • Go语言图形界面开发:Go版GTK
    初识GTK​​01、GUI概述​​​​02、GTK简介​​​​03、环境搭建(windows)​​Go语言快速入门​​04、Go入门教程​​HelloGTK​​05、一个简单的空白窗口​​​​06、控......
  • C语言也能做界面:踏上GTK+学习之旅
    ​​00、背上行囊1——程序员学习之道​​​​01、背上行囊2——为什么要学习GTK​​​​02、背上行囊3——​​​​GUI概述​​​​03、背上行囊4——GTK简介​​​​04、......
  • GTK入门学习:glade的环境搭建
    1)Linux环境搭建在线安装即可,安装命令如下:测试是否安装成功,在终端敲glade即可:2)windows版本环境搭建下载一个windows版本双击后一直“下一步”安装即可。需要注意的是,如果......
  • GTK简单版计算器
    接下来我们做一个简单版的计算器。1)获取按钮上的内容。2)如果获取的内容是“c”,则代表进行退格操作,相当于删去最后一个字符。3)如果获取的内容不是“c”,则把每一次获取的......
  • Android进阶笔记-7. Context详解
    Context数量Activity数量+Service数量+1(1为Application)Context的继承关系Context下有两个子类,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能......
  • GTK入门学习:布局练习之计算器
    接下来,我们做一个布局练习,如下图:我们用表格布局实现,表格布局参考坐标如下:这里我们用到行编辑控件(GtkEntry )。行编辑的创建:GtkWidget*gtk_entry_new(void);返回值:行编......
  • 为什么要学习GTK?
    开发图形界面的工具包有很多,windows有WPF、WinForm,Android有自带的SDK,IOS也有自己的一套,跨平台的话可以用Qt,结果发现,GTK真没它的用武之地。实际上,GTK的地位真是这样的,那我......
  • GTK入门学习:glade的介绍
    上面的学习中,我们是通过纯C语言代码来进行GTK编程的,这也是我们学习GTK的最佳方法,因为这样我们可以清楚地知道整个流程,大体流程如下:1)创建主窗口,根据需要设置窗口的相应属性2)......
  • GTK进阶学习:GTK实现截图功能( 可以指定截图范围 )
    按按钮截图,图片保存在当前路径为“save.png”:#include<gtk/gtk.h>#include<cairo.h>/********************************************************功能:指定窗口区域截图,需......
  • GTK常用控件之图片控件( GtkImage )
    图片控件和标签的作用很类似,都是作为显示用的,只是图片控件显示的内容是图片。图片控件的创建:GtkWidget*gtk_image_new_from_file(constgchar*filename);filename:图片的......