gtk.gdk.Keymap
gtk.gdk.Keymap — an object containing mappings of keys to key
values.
Description
A gtk.gdk.Keymap
defines the translation from keyboard state (including a hardware key, a
modifier mask, and active keyboard group) to a keyval. This translation has
two phases. The first phase is to determine the effective keyboard group and
level for the keyboard state; the second phase is to look up the
keycode/group/level triplet in the keymap and see what keyval it corresponds
to. One gtk.gdk.Keymap
object exists for each user display. PyGTK supports only
one display, so gtk.gdk.keymap_get_default()()
returns the singleton gtk.gdk.Keymap.
A keymap is a mapping from a Keymap key to key values. You can
think of a Keymap key as a representation of a symbol printed on a physical
keyboard key. That is, it contains three pieces of information. First, it
contains the hardware keycode; this is an identifying number for a physical
key. Second, it contains the level of the key. The level indicates which
symbol on the key will be used, in a vertical direction. So on a standard US
keyboard, the key with the number "1" on it also has the exclamation point
("!") character on it. The level indicates whether to use the "1" or the "!"
symbol. The letter keys are considered to have a lowercase letter at level
0, and an uppercase letter at level 1, though only the uppercase letter is
printed. Third, the Keymap key contains a group; groups are not used on
standard US keyboards, but are used in many other countries. On a keyboard
with groups, there can be 3 or 4 symbols printed on a single key. The group
indicates movement in a horizontal direction. Usually groups are used for
two different languages. In group 0, a key might have two English
characters, and in group 1 it might have two Hebrew characters. The Hebrew
characters will be printed on the key next to the English characters.
Methods
gtk.gdk.Keymap.lookup_key
def lookup_key(keycode, group, level)
|
keycode : | the hardware keycode. |
group : | the key group |
level : | the key level |
Returns : | a keyval, or 0 if none was mapped to the
(keycode, group,
level) triplet. |
Note
This method is available in PyGTK 2.4 and above.
The lookup_key() method returns the
keyval mapped to the specified (keycode,
group, level) triplet. This
method returns 0 if no keyval is found. For normal user input, you want to
use the translate_keyboard_state()
method instead of this method, since the effective group or level may not be
the same as the current keyboard state.
The parameters to this method are:
keycode : | the hardware keycode. This is an identifying number for
a physical key. |
group : | indicates movement in a horizontal direction. Usually
groups are used for two different languages. In group 0, a key might have
two English characters, and in group 1 it might have two Hebrew
characters. The Hebrew characters will be printed on the key next to the
English characters. |
level : | indicates which symbol on the key will be used, in a
vertical direction. So on a standard US keyboard, the key with the number
"1" on it also has the exclamation point ("!") character on it. The level
indicates whether to use the "1" or the "!" symbol. The letter keys are
considered to have a lowercase letter at level 0, and an uppercase letter at
level 1, though only the uppercase letter is printed. |
gtk.gdk.Keymap.translate_keyboard_state
def translate_keyboard_state(keycode, state, group)
|
keycode : | a keycode |
state : | a modifier state |
group : | an active keyboard group |
Returns : | a 4-tuple containing the keyval, the effective group,
the level and the modifiers that were used to determine the group or
level |
Note
This method is available in PyGTK 2.4 and above.
The translate_keyboard_state() method
translates the contents of a keyboard gtk.gdk.Event
(specified by keycode,
state and group) into a
keyval, effective group, level and consumed modifiers that affected
the translation (and are unavailable for application use) which are
returned in a 4-tuple. See the lookup_key()
method for an explanation of groups and levels. 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. For
convenience, the keyboard gtk.gdk.Event
already contains the translated keyval, so this method isn't as useful
as you might think.
The value of state or the consumed
modifiers is a combination of the GDK Modifier Constants.
Consumed Modifiers
The consumed modifiers are modifiers that should be masked out
from state when comparing this key press to a hot
key. 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. For
example:
# We want to ignore irrelevant modifiers like ScrollLock
ALL_ACCELS_MASK = (gtk.gdk.CONTROL_MASK | gtk.gdk.SHIFT_MASK
| gtk.gdk.MOD1_MASK)
keyval, egroup, level, consumed = keymap.translate_keyboard_state(
event.hardware_keycode, event.state, event.group)
if (keyval == gtk.keysyms.plus and
(event.state & ~consumed & ALL_ACCELS_MASK) == gtk.gdk.CONTROL_MASK):
# Control was pressed
|
Note that most keys that are affected by the
Shift key will have gtk.gdk.SHIFT_MASK
part of the consumed modifiers (e.g. Control-Shift-Tab).
All single modifier combinations that could affect the key for
any combination of modifiers will be returned in consumed_modifiers.
Multi-modifier combinations are returned only when actually found in
state. When you store accelerators, you should always
store them with consumed modifiers removed. Store <Control>plus, not
<Control><Shift>plus,
gtk.gdk.Keymap.get_entries_for_keyval
def get_entries_for_keyval(keyval)
|
keyval : | a keyval, such as GDK_a,
GDK_Up, GDK_Return,
etc. |
Returns : | a tuple containing 3-tuple containing a keycode,
a group and a level that will generate
keyval. |
Note
This method is available in PyGTK 2.4 and above.
The get_entries_for_keyval() method
returns a tuple of (keycode, group, level) 3-tuples 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, the gtk.gdk.KEY_PRESS and
gtk.gdk.KEY_RELEASE gtk.gdk.Event objects
contain a group attribute that indicates the active
keyboard group. The level is computed from the modifier mask.
gtk.gdk.Keymap.get_entries_for_keycode
def get_entries_for_keycode(hardware_keycode)
|
hardware_keycode : | a keycode |
Returns : | a tuple containing 4-tuples: (keyval, keycode,
group, level) |
Note
This method is available in PyGTK 2.4 and above.
The get_entries_for_keycode() method
returns a tuple containing 4-tuples with: the keyvals bound to
hardware_keycode, the keycode, the group and the
level. 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. See the translate_keyboard_state()
method for more information.
gtk.gdk.Keymap.get_direction
Returns : | a Pango direction: pango.DIRECTION_LTR or pango.DIRECTION_RTL. |
The get_direction() method returns the direction of the keymap.
Functions
gtk.gdk.keymap_get_default
def gtk.gdk.keymap_get_default()
|
Returns : | the default gdk keymap for the
display. |
The gtk.gdk.keymap_get_default() function
returns the default gtk.gdk.Keymap for
the display.
gtk.gdk.keymap_get_for_display
def gtk.gdk.keymap_get_for_display(display)
|
Note
This function is available in PyGTK 2.2 and above.
The gtk.gdk.keymap_get_for_display()
function returns the gtk.gdk.Keymap for
the gtk.gdk.Display
specified by display.
gtk.gdk.keyval_name
def gtk.gdk.keyval_name(keyval)
|
keyval : | a key value |
Returns : | a string containing the name of the key, or
None if keyval is not a valid key. |
The gtk.gdk.keyval_name() function converts
the key value specified by keyval into a symbolic
name.
gtk.gdk.keyval_from_name
def gtk.gdk.keyval_from_name(keyval_name)
|
keyval_name : | a key name |
Returns : | the corresponding key value or 0 if the key
name is not a valid key. |
The gtk.gdk.keyval_from_name() function
converts the key name specified by keyval_name to a
key value.
gtk.gdk.keyval_convert_case
def gtk.gdk.keyval_convert_case(symbol)
|
symbol : | a keyval |
Returns : | a 2-tuple containing the lowercase and
uppercase versions of
symbol |
Note
This function is available in PyGTK 2.4 and above.
The gtk.gdk.keyval_convert_case() function
returns the lowercase and uppercase versions of the keyval specified by
symbol.
gtk.gdk.keyval_to_upper
def gtk.gdk.keyval_to_upper(keyval)
|
keyval : | a key value. |
Returns : | the upper case form of keyval, or keyval itself
if it is already in upper case or it is not subject to case
conversion. |
The gtk.gdk.keyval_to_upper() function
converts the key value specified by keyval to upper
case, if applicable.
gtk.gdk.keyval_to_lower
def gtk.gdk.keyval_to_lower(keyval)
|
keyval : | the key value |
Returns : | the lower case form of keyval, or keyval itself
if it is already in lower case or it is not subject to case
conversion. |
The gtk.gdk.keyval_to_lower() function
converts the key value specified by keyval to lower
case, if applicable.
gtk.gdk.keyval_is_upper
def gtk.gdk.keyval_is_upper(keyval)
|
keyval : | the key value |
Returns : | TRUE if
keyval is in upper case or if keyval is not subject
to case conversion. |
The gtk.gdk.keyval_is_upper() function
returns TRUE if the key value specified by
keyval is in upper case or not subject to case
conversion.
gtk.gdk.keyval_is_lower
def gtk.gdk.keyval_is_lower(keyval)
|
keyval : | the key value |
Returns : | TRUE if
keyval is in lower case, or if
keyval is not subject to case
conversion. |
The gtk.gdk.keyval_is_lower() function
returns TRUE if the key value specified by
keyval is in lower case or is not subject to case
conversion.
gtk.gdk.keyval_to_unicode
def gtk.gdk.keyval_to_unicode(keyval)
|
keyval : | the key value |
Returns : | the corresponding unicode character, or 0 if
there is no corresponding character. |
The gtk.gdk.keyval_to_unicode() function
converts the key value specified by keyval to the
corresponding ISO10646 (Unicode) character.
gtk.gdk.unicode_to_keyval
def gtk.gdk.unicode_to_keyval(wc)
|
wc : | a ISO10646 encoded (unicode)
character |
Returns : | the corresponding key value, if one exists. or,
if there is no corresponding symbol, wc |
0x01000000 |
The gtk.gdk.unicode_to_keyval() function
converts the ISO10646 (unicode) character specified by
wc to a key value.
Signals
The "direction-changed" gtk.gdk.Keymap Signal
def callback(gdkkeymap, user_param1, ...)
|
gdkkeymap : | the gdkkeymap that received the
signal |
user_param1 : | the first user parameter (if any) specified
with the connect()
method |
... : | additional user parameters (if
any) |
The "direction-changed" signal is emitted when the pango text
direction of gdkkeymap is changed
The "keys-changed" gtk.gdk.Keymap Signal
def callback(gdkkeymap, user_param1, ...)
|
gdkkeymap : | the gdkkeymap that received the
signal |
user_param1 : | the first user parameter (if any) specified
with the connect()
method |
... : | additional user parameters (if
any) |
Note
This signal is available in GTK+ 2.2 and above.
The "keys-changed" signal is emitted when the mapping
represented by keymap changes.