Poderia, por favor, esclarecer se você quer mnemônicos (atalhos de teclado para widgets GUI, ou seja, ctrl-q) ou aceleradores (atalhos de teclado para ativar itens de menu, por exemplo, alt-f q). Tanto quanto eu entendo estas são duas coisas diferentes, então definir um mnemônico para um item de menu não irá também formar um acelerador para ele.
Em qualquer caso, para os aceleradores você pode formá-los simplesmente criando seus itens de menu com uma função diferente: Gtk.MenuItem.with_mnemonic("_File");
em vez de Gtk.MenuItem.with_label("File")
. É então definível com, e. a função file.set_label ('Fil_e')
Para os mnemônicos, não sei exatamente por que não funciona, já que sou totalmente novo no vala. Mas eu pude fazer um “porquinho” de este c-exemplo e fazê-lo funcionar usando grupos de aceleradores em vez do mapa do acelerador. Então eu substituí
// Register a new accelerator with the global accelerator map
Gtk.AccelMap.add_entry("<MyWindow>/File/Quit", 'Q', Gdk.ModifierType.CONTROL_MASK);
quit_mi.set_accel_path("<MyWindow>/File/Quit");enter code here
com
var accel_group = new Gtk.AccelGroup();
this.add_accel_group(accel_group);
quit_mi.add_accelerator("activate", accel_group, 'R', Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE);
e isso parece fazer o truque.
Espero que ajude. Atenciosamente TLE