pub trait DisplayExtManual: 'static {
    fn translate_key(
        keycode: u32,
        state: ModifierType,
        group: i32
    ) -> Option<(Key, i32, i32, ModifierType)>; fn get_setting(&self, name: &str) -> Option<Value>; fn map_keyval(&self, keyval: Key) -> Option<Vec<KeymapKey>>; fn map_keycode(&self, keycode: u32) -> Option<Vec<(KeymapKey, Key)>>; fn backend(&self) -> Backend; }
Expand description

Trait containing manually implemented methods of Display.

Required Methods

Translates the contents of a GdkEventKey into a keyval, effective group, and level.

Modifiers that affected the translation and are thus unavailable for application use are returned in @consumed_modifiers.

The @effective_group is the group that was actually used for the translation; some keys such as Enter are not affected by the active keyboard group. The @level is derived from @state.

@consumed_modifiers gives modifiers that should be masked out from @state when comparing this key press to a keyboard shortcut. For instance, on a US keyboard, the plus symbol is shifted, so when comparing a key press to a <Control>plus accelerator <Shift> should be masked out.

This function should rarely be needed, since GdkEventKey already contains the translated keyval. It is exported for the benefit of virtualized test environments.


a keycode


a modifier state


active keyboard group


true if there was a keyval bound to keycode/state/group.


return location for keyval


return location for effective group


return location for level


return location for modifiers that were used to determine the group or level

Retrieves a desktop-wide setting such as double-click time for the @self.


the name of the setting


location to store the value of the setting


true if the setting existed and a value was stored in @value, false otherwise

Obtains a list of keycode/group/level combinations that will generate @keyval.

Groups and levels are two kinds of keyboard mode; in general, the level determines whether the top or bottom symbol on a key is used, and the group determines whether the left or right symbol is used.

On US keyboards, the shift key changes the keyboard level, and there are no groups. A group switch key might convert a keyboard between Hebrew to English modes, for example.

GdkEventKey contains a group field that indicates the active keyboard group. The level is computed from the modifier mask.

The returned array should be freed with g_free().


a keyval, such as GDK_KEY_a, GDK_KEY_Up, GDK_KEY_Return, etc.


true if keys were found and returned


return location for an array of KeymapKey

Returns the keyvals bound to @keycode.

The Nth KeymapKey in @keys is bound to the Nth keyval in @keyvals.

When a keycode is pressed by the user, the keyval from this list of entries is selected by considering the effective keyboard group and level.

Free the returned arrays with g_free().


a keycode


true if there were any entries


return location for array of KeymapKey


return location for array of keyvals

Get the currently used display backend