当前位置:  技术问答>linux和unix

用GTK如何用键盘代替鼠标?

    来源: 互联网  发布时间:2016-07-13

    本文导语:  我使用了gtk_window_add_accel_group和gtk_widget_add_accelerator这两个函数,按下键盘上的按键时确实能进入button_click的回调函数,但是按钮却没变化,没有按下和弹起的效果,和鼠标单击还不是完全一模一样,怎样才能实现用...

我使用了gtk_window_add_accel_group和gtk_widget_add_accelerator这两个函数,按下键盘上的按键时确实能进入button_click的回调函数,但是按钮却没变化,没有按下和弹起的效果,和鼠标单击还不是完全一模一样,怎样才能实现用键盘实现鼠标click的效果呢?

|
额,这个应该是必须模拟鼠标输入了,给你一篇参考的文章
http://blog.csdn.net/chenzhixin/archive/2008/03/12/2173530.aspx

|
从GTK角度给出一个方法吧,当你接收keypress事件时,判断是否是你要的键,然后给你的要代替的widget发出一个click_event信息,g_signal_emit, 把信息的坐标设置到你button的位置, 这样就可以解决了。

 

|
还有可能你用得上这个, 
static void
key_panel_simulate_key(GtkWidget *window,
                                gint keyval, gint press)
{
        GdkEvent *event;
        GdkEventType type;

        if(press)
                type = GDK_KEY_PRESS;
        else
                type = GDK_KEY_RELEASE;

        event = gdk_event_new(type);

        //set the attrbute
        event->key.window = window->window;
        event->key.keyval = keyval;
        event->key.state = 16;
        event->key.hardware_keycode = 36;
        event->key.is_modifier = 0;
        g_object_ref(event->key.window);

        if(keyval == GDK_BackSpace)
        {
                event->key.hardware_keycode = 14;
        }
        if(keyval == GDK_Left)
        {
                event->key.hardware_keycode = 105;
        }
        if(keyval == GDK_Right)
        {
                event->key.hardware_keycode = 106;
        }

        gtk_main_do_event(event);

        return;
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • gtk中怎么响应鼠标双击事件呀??
  • gtk 鼠标motion事件捕获
  • 在gtk 中如何屏蔽鼠标双击事件
  • GTK 里面如何捕获鼠标移动事件???????????
  • gtk怎样将鼠标隐藏
  • GTK编程,如何设置及获取鼠标滚动条滚动事件
  • gtk中的鼠标事件处理?
  • gtk+中鼠标移动到button上触发什么事件
  • gtk中的TextView里面用鼠标选中一段字符后怎样将选中的字符串放到剪切板里面?
  • gtk keypressevent 为什么会捕获到鼠标button消息?
  • GTK+鼠标事件问题
  • 关于gtk的目录问题,我的目录是 gtk-2.0/gtk/gtk.h ??
  • Redhat linux9.0 下Gtk+编程的#include <gtk/gtk.h>问题
  • 【重要】gtk+ 编译gtk+的问题,不同于一般gtk的搭建--1000分,问题解决了,开号给分,决不食言!大家都来看看
  • gtk 和 gtk+ 有什么区别?
  • centos5.4中安装gtk时,yum库最新版是gtk2.10,如何更新yum库安装gtk2.12
  • 我使用GTK+2.0写界面程序时,怎么找不到gtk.h文件?
  • GTK+ gtk_tree问题
  • gtk for win 和 gtk for linux 下的程序问题?
  • GTK窗口前端显示及GTK窗口闪烁
  • 用GTK开发的程序如何在没有GTK动态连接库的Linux里运行?
  • 【GTK】GTK中有没有这个widget?
  • 我想学习GTK+2.0,请问如何准备GTK编程环境???
  • [GTK] gtk最小化问题与恢复问题
  • 【gtk+】初学gtk+,请教一个问题
  • 【gtk】关于gtk布局问题
  • 本人刚学gtk编程,留下油箱,欢迎喜欢gtk编程的朋友和我交流啊!!!!
  • 大家好,想知道gtk与gtk+有什么区别?
  • 关于GTK中gtk_widget_hide()的问题
  • gtk编程问题,如何在一个线程中向gtk控件发送一个expose_event消息
  • gtk中如何获取gtk_text_view中的输入内容?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3