首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GtkD的密钥输入

使用GtkD的密钥输入
EN

Stack Overflow用户
提问于 2013-04-24 17:14:05
回答 1查看 322关注 0票数 2

我是gtk和GtkD的初学者。

现在,我正在尝试从键盘上获取与相关的输入。

但是,三年似乎在工具包上做了一些改变。

我在下面写了代码。然而,在回调函数中,我得到了ev的奇怪值。

独自一人走,我看不出有什么决心。

那么,你能告诉我修改的地方吗?

我提前感谢你,也感谢你对我糟糕的英语的耐心。

我使用的是gtkD-2.1.1和gtk+3.2.3。

这是完整的代码:

代码语言:javascript
复制
    import std.stdio;  
    import gtkc.gdktypes;  
    import gtk.MainWindow;  
    import gtk.Widget;  
    import gdk.Event;  
    import gtk.Main;  

    class Window : MainWindow{  
    immutable width = 200;  
    immutable height = 200;   
        this(){    
            super("input test");   
            setDefaultSize(width,height);  
            setEvents(EventMask.KEY_PRESS_MASK);  // Actually I don't know how this works

            auto callback_func = cast(bool delegate(Event,Widget))&get_key; // I doubt this cast 
            this.addOnKeyPress(callback_func);

            showAll();
        }
        bool get_key(GdkEventKey* ev, Widget widget){
            writefln("sender %s", widget);

            writefln("type %x",ev.type);
            writefln("window* %x",ev.window);
            writefln("send_event %x",ev.sendEvent);
            writefln("time %x",ev.time);
            writefln("state %x",ev.state);
            writefln("keyval %x",ev.keyval);
            writefln("length %x",ev.length);
            writefln("gchar* %x",ev.string);
            writefln("hardware_keycode %x",ev.hardwareKeycode);
            writefln("group %x",ev.group);
            writefln("is_modifier %x\n",ev.bitfield0);

            return true;
        }
    }

    void main(string[] args){  
        Main.init(args);  
        auto win = new Window();  
        Main.run();  
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-26 13:17:00

是的,那个演员是错的。我想GdkEventKey*的签名已经过时了。将您的get_key更改为接受Event,您应该得到适当的结果:

代码语言:javascript
复制
    ...
    auto call = &get_key;
    ...
    bool get_key(Event e, Widget widget){
        GdkEventKey* ev = e.key();
    ...

我从来没有对GtkD做过任何事情,这仅仅是对文档的一些浏览的结果。所以,这可能不是最好的练习,但它应该能让你重新上路。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16198211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档