NAME
X11::CursorFont - cursor font glyph names and numbers
SYNOPSIS
use X11::CursorFont '%CURSOR_GLYPH';
my $num = $CURSOR_GLYPH{'fleur'}; # is 52
my $name = $X11::CursorFont::CURSOR_NAME[52]; # is "fleur"
DESCRIPTION
This is the names and numbers of the glyphs in the X11 cursor font which contains various standard mouse pointer cursors.
%CURSOR_GLYPH
maps a glyph name to its character number in the font,
$CURSOR_GLYPH{'fleur'} # is 52
@CURSOR_NAME
conversely is indexed by character number and gives the glyph name,
$CURSOR_NAME[52] # is "fleur"
Each glyph has an associated mask at character number glyph+1 which is the shape of the cursor (the displayed vs transparent pixels). So the character numbers are always even and in @CURSOR_NAME
only the even character positions have names.
The cursor images can be viewed with the usual xfd
font display program,
xfd -fn cursor
The names are per the Xlib /usr/include/X11/cursorfont.h file, without the XC_
prefixes. The full list is
Name Number
X_cursor 0 default fat X
arrow 2
based_arrow_down 4
based_arrow_up 6
boat 8
bogosity 10
bottom_left_corner 12
bottom_right_corner 14
bottom_side 16
bottom_tee 18
box_spiral 20 a square spiral
center_ptr 22
circle 24
clock 26
coffee_mug 28
cross 30
cross_reverse 32
crosshair 34 "+" shape
diamond_cross 36
dot 38
dotbox 40
double_arrow 42
draft_large 44
draft_small 46
draped_box 48
exchange 50
fleur 52
gobbler 54
gumby 56
hand1 58
hand2 60
heart 62
icon 64
iron_cross 66
left_ptr 68
left_side 70
left_tee 72
leftbutton 74
ll_angle 76
lr_angle 78
man 80
middlebutton 82
mouse 84
pencil 86
pirate 88 skull and crossbones
plus 90
question_arrow 92
right_ptr 94
right_side 96
right_tee 98
rightbutton 100
rtl_logo 102
sailboat 104
sb_down_arrow 106
sb_h_double_arrow 108
sb_left_arrow 110
sb_right_arrow 112
sb_up_arrow 114
sb_v_double_arrow 116
shuttle 118
sizing 120
spider 122
spraycan 124
star 126
target 128
tcross 130
top_left_arrow 132
top_left_corner 134
top_right_corner 136
top_side 138
top_tee 140
trek 142
ul_angle 144
umbrella 146
ur_angle 148
watch 150 a good "busy" indicator
xterm 152 a vertical insertion bar
X_cursor
is the usual default when the server first starts or when the root window is set to cursor "None".
VARIABLES
%X11::CursorFont::CURSOR_GLYPH
-
A mapping of glyph name to cursor font character number.
@X11::CursorFont::CURSOR_NAME
-
A table of cursor font character number to glyph name.
EXPORTS
Nothing is exported by default, but %CURSOR_GLYPH
and @CURSOR_NAME
can be selected in usual Exporter
style (see Exporter),
use X11::CursorFont '%CURSOR_GLYPH', '@CURSOR_NAME';
EXAMPLE
To create a cursor from a desired glyph,
my $cursor_name = 'spraycan';
my $cursor_glyph = $CURSOR_GLYPH{$cursor_name}; # number
my $cursor_font = $X->new_rsrc;
$X->OpenFont ($cursor_font, "cursor"); # cursor font
my $cursor = $X->new_rsrc;
$X->CreateGlyphCursor
($cursor,
$cursor_font, # font
$cursor_font, # mask font
$cursor_glyph, # glyph
$cursor_glyph + 1, # and its mask
0,0,0, # foreground, black
0xFFFF,0xFFFF,0xFFFF); # background, white
$X->CloseFont ($cursor_font);
# then use $cursor with CreateWindow or ChangeWindowAttributes
# cursor => $cursor
The $cursor_font
could be kept open if used repeatedly. Opening and closing isn't a round-trip, so an open when needed may be enough.
Any RGB colours can be given in CreateGlyphCursor()
, but actual appearance on screen will be limited by the hardware.
All cursors in the core protocol are two-colours with pixels fully opaque or fully transparent as per this create. The RENDER extension, when available, can make multi-colour and partial transparency if desired (see X11::Protocol::Ext::RENDER).
SEE ALSO
/usr/include/X11/cursorfont.h and listing in the Xlib manual appendix B (http://www.x.org/docs/X11/
or /usr/share/doc/libx11-dev/libX11.txt.gz).
Xlib Xmu XmuCursorNameToIndex()
(http://www.x.org/docs/Xmu/
or /usr/share/doc/libxmu-headers/Xmu.txt.gz)
xfd(1) to display the cursor font.
xsetroot(1) to change the root window cursor.
HOME PAGE
http://user42.tuxfamily.org/x11-protocol-other/index.html
LICENSE
Copyright 2011, 2012, 2013, 2014, 2017 Kevin Ryde
X11-Protocol-Other is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
X11-Protocol-Other 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 General Public License for more details.
You should have received a copy of the GNU General Public License along with X11-Protocol-Other. If not, see <http://www.gnu.org/licenses/>.