Revision [32951]
This is an old revision of gtkdialogDocTips9.8 made by zigbert on 2020-08-04 20:16:48.
9.8 Hotkeys
Here follows 3 different ways of defining hotkeys
<window>
An <action> signal inside the <window> widget gives the most direct hotkey
<action signal="key-press-event" condition="command_is_true( [ $(( ${KEY_MOD} & 5 )) = 5 ] && [ $KEY_RAW = 0x1b ] && echo true )">Refresh:varDATE</action>
SHIFT's state is held by 0th bit and CTRL state by 2nd bit of $KEY_MOD variable (?????C?S) , so, in order to read their state correctly, we need to discard the rest of bits by logical AND: $(( $KEY_MOD & 5 )). If we would want SHIFT alone, it would be $(( $KEY_MOD & 1)) = 1, only CTRL - $(( $KEY_MOD & 4 )) = 4 and so on.see http://murga-linux.com/puppy/viewtopic.php?t=94163 for more depth.
<menuitem>
Menuitems can set both accelerator key and modifier (SHIFT is 1, CTRL is 4 and ALT is 8 ). For a full list of accelerator key values check http://git.gnome.org/browse/gtk+/plain/gdk/gdkkeysyms.h
<menuitem stock-id="gtk-quit" accel-key="0x51" accel-mods="4">
<button>
You can activate buttons by pressing keyboard combinations. simply add the attribute use-underline. If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key.
<button use-underline="true"><label>_Refresh</label></button>
The defined char in the <label> + 'alt' key will activate given <action>.