Я новичок как gtk, так и GtkD.
Теперь я пытаюсь получить ввод с клавиатуры со ссылкой на this.
Но, кажется, что три года внесли некоторые изменения в Toolkits.
Я написал код ниже. Тем не менее, я получил странные значения ev в функции обратного вызова.Ключ ввода с использованием GtkD
Я не мог видеть никакой перспективы разрешения, оставаясь в одиночестве.
Итак, не могли бы вы показать мне, где изменить?
Я ценю вас заранее, а также вашего пациента с моим бедным английским языком.
Я использую gtkD-2.1.1 и gtk + 3.2.3.
это полный код:
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();
}
Это работает! Я попытаюсь прочитать документы больше. Спасибо!! – ggkuron