build::Keysyms(3)
π build::Keysyms β the perl manual page, bestie edition π
Okay so real talk: this is a page from the User Contributed Perl Documentation set, and it's filed under build::Keysyms(3) β but the actual module you're gonna use is called Gtk2::Gdk::Keysyms, and it's all about key codes for Gtk2 programs. Yes the name situation is a little chaotic, we love that for it. π
β¨ NAME β¨
Gtk2::Gdk::Keysyms β key codes for Gtk2 programs π¦
πΈ SYNOPSIS πΈ
use Gtk2;
use Gtk2::Gdk::Keysyms;
#
# the most common use is for deciphering keycodes in key events,
# like this:
#
sub key_press_handler {
my ($widget, $event) = @_;
if ($event->keyval == $Gtk2::Gdk::Keysyms{Escape}) {
abort_whatever ();
return 1;
}
elsif ($event->keyval == $Gtk2::Gdk::Keysyms{F1}) {
do_help_thing ();
return 1;
}
elsif ($event->keyval == $Gtk2::Gdk::Keysyms{KP_Enter}) {
execute_selected_text_as_command ();
return 1;
}
# we didn't handle it, pass it on...
return 0;
}
Like, that's the whole vibe. You grab the keyval, you compare it to a named constant instead of a cursed mystery number, you slay. π
π DESCRIPTION π
So Gdk defines symbolic names for the codes that are associated with each key on a keyboard β the entire point being that you do not go absolutely feral writing raw numeric values all over your programs. Nobody deserves that. π
The hash %Gtk2::Gdk::Keysyms holds all of those keycodes, indexed by the name, so your perl programs can use them whenever you need to do custom key handling. This comes up a lot when:
- you wanna bind an action to a key that isn't usable as an accelerator,
- you don't have accelerators at all,
- you're trying to write an easter egg, π
- or literally whatever, no judgement here.
The list of keycodes is quite large and rather rarely used in application code, so the devs put it in a separately-loaded module to save space. Iconic, honestly. π«Ά
As an alternative, you might want to investigate "Gtk2::Gdk->keyval_from_name", which offers basically the same functionality as the hash. Two paths, same destination, pick your fighter. β
And to get a list of all available keys? You've got options:
- dump
%Gtk2::Gdk::Keysyms, or - look at the source of this module with
perldoc -m Gtk2::Gdk::Keysyms.
π AUTHOR π
This module was automatically generated by a very simple perl script from gdk/gdkkeysyms.h.
And the closing line, which is genuinely a whole mood: "Programs that write programs are the happiest programs of all." ππ ate, no crumbs.
π COPYRIGHT π
Copyright (C) 2003, 2009 by the gtk2-perl team (see the file AUTHORS for the full list)
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Lowkey important bestie: that warranty disclaimer is doing heavy lifting. It's giving "we said what we said." π
π¦ SEE ALSO π¦
perlGtk2Gtk2::Gdk
perl v5.42.0 β¨ 2025-07-25 β¨ and that's the build::Keysyms(3) energy, mwah π
π go press some keys, bestie π
π¦ where this page comes from
- fedora 43: perl-Gtk2 1.24993-23.fc43 Β· LicenseRef-Callaway-LGPLv2+
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms