X11::Protocol::Ext::RANDR -- Perl extension module for the X Resize, Rotate and Reflect Extension
use X11::Protocol; $x = X11::Protocol->new($ENV{'DISPLAY'}); $x->init_extension('RANDR') or die;
This moudle is used by the X11::Protocol(3pm) module to participate in the resize, rotate and reflect extension to the X protocol, allowing a client to participate or control these screen changes per "The X Resize, Rotate and Reflect Extension", a copy of which can be obtained from http://www.x.org/releases/X11R7.7/doc/randrproto/randrproto.txt.
This manual page does not attempt to document the protocol itself, see the specification for that. It documents the "CONSTANTS", "REQUESTS", "EVENTS" and "ERRORS" that are added to the X11::Protocol(3pm) module.
X11::Protocol::Ext::RANDR provides the following symbolic constants:
Rotation => [ qw(Rotate_0 Rotate_90 Rotate_180 Rotate_270 Reflect_X Refect_Y) ] RRSelectMask => [ qw(ScreenChangeNotifyMask CrtcChangeNotifyMask OutputChangeNotifyMask OutputPropertyNotifyMask) ] RRConfigStatus => [ qw(Success InvalidConfigTime InvalidTime Failed) ] ModeFlag => [ qw(HSyncPositive HSyncNegative VSyncPositive VSyncNegative Interlace DoubleScan CSync CSyncPositive CSyncNegative HSkewPercent BCast PixelMultiplex DoubleClock ClockDividedBy2) ] Connection => [ qw(Connected Disconnected UnknownConnection) ] SubpixelOrder => [ qw(Unknown HoizontalRGB HorizontalBGR VerticalRGB VerticalBGR None) ]
X11::Protocol::Ext::RANDR provides the folowing bad resource errors: Output, Crtc, Mode.
Output
Crtc
Mode
X11::Protocol::Ext::RANDR provides the following requests:
$X->RRQueryVersion($major, $minor) => ($major, $minor)
$X->RRSetScreenConfig($window, $time, $config_time, size_index, rotation_reflection, refresh_rate) => ($status, $time, $config_time, $root, $subpixel_order)
$X->RRSelectInput($window, $enable) $enable => $RRSelectMask # mask
$X->RRGetScreenInfo($window) => ($rotations, $root, $time, $config_time, $size_index, $rotation_and_reflection, $rate, $screensizes, $rateinfos) $screensizes => [ $screensize, ... ] $screensize => [ $width, $height, $width_mm, $height_mm ] $rateinfos => [ $rateinfos, ... ] $rateinfo => [ $rate, ... ]
$X->RRGetScreenSizeRange($window) => ($minWidth, $minHeight, $maxWidth, $maxHeight)
$X->RRSetScreenSize($window, $width, $height, $width_mm, $height_mm)
$X->RRGetScreenResources($window) => ($time, $config_time, $crtcs, $outputs, $modeinfos) $crtcs => [ $crtc, ... ] $outputs => [ $output, ... ] $modeinfos => [ $modeinfo, ... ] $modeinfo => [ $id, $width, $heigth, $dot_clock, $h_sync_start, $h_sync_end, $h_total, $h_skew, $v_sync_start, $v_sync_end, $v_total, $mode_flags, $name ] $mode_flags => $ModeFlag # mask
$X->RRGetOutputInfo($output, $config_time) => ($status, $time, $crtc, $width_mm, $height_mm, $connection, $subpixel_order, $preferred_modes, $crtcs, $modes, $clones, $name)
$X->RRListOutputProperties($output) => ($atom, ...)
$X->RRQueryOutputProperty($output,$atom) => ($pending, $range, $immutable, @values)
$X->RRConfigureOutputProperty($output,$atom,$pending,$range,@values)
$X->RRChangeOutputProperty($output,$property,$type,$format,$mode,@values)
$X->RRDeleteOutputProperty($output, $atom)
$X->RRGetOutputProperty($output, $property, $type, $offset, $length, $delete, $pending) => ($format, $type, $bytes_after, @values
$X->RRCreateMode($window, $id, $width, $height, $dot_clock, $h_sync_start, $h_sync_end, $h_total, $h_skew, $v_sync_start, $v_sync_end, $v_total, $flags, $name) => ($mode)
$X->RRDestroyMode($mode)
$X->RRAddOutputMode($output, $mode)
$X->RRDeleteOutputMode($output, $mode)
$X->RRGetCrtcInfo($ctrc,$config_time) => ($status, $timestamp, $x, $y, $width, $height, $mode, $current_randr, $possible_rotations, $outputs, $possible_outputs) $outputs => [ $output, ... ] $possible_outputs => [ $output, ... ]
$X->RRSetCrtcConfig($ctrc, $time, $config_time, $x, $y, $mode, $randr, @outputs) => ($status, $new_time)
$X->RRGetCrtcGammaSize($crtc) => ($size)
$X->RRGetCrtcGamma($crtc) => ($crtc, $reds, $greens, $blues)
$X->RRSetCrtcGamma($crtc,@reds,@greens,@blues)
$X->RRGetScreenResourcesCurrent($window) => ($time, $config_time, $crtcs, $outputs, $modeinfos) $crtcs => [ $crtc, ... ] $outputs => [ $output, ... ] $modeinfos => [ $modeinfo, ... ] $modeinfo => [ $id, $width, $height, $dot_clock, $h_sync_start, $h_sync_end, $h_total, $h_skew, $v_sync_start, $v_sync_end, $v_total, $mod_flags, $name ] $mode_flags => $ModeFlag # mask
$X->RRSetCrtcTransform($ctrc,$transform,$filter,@params)
$X->RRGetCrtcTransform($crtc) => ($pending, $has_transforms, $current, $pending_filter, $current_filter) $pending_filter => [ $filter, @params ] $current_filter => [ $filter, @params ]
$X->RRGetPanning($crtc) => ($status, $time, $left, $top, $width, $height, $track_left, $track_top, $track_width, $track_height, $border_left, $border_top, $border_right, $border_bottom)
$X->RRSetPanning($crtc, $time, $left, $top, $width, $height, $track_left, $track_top, $track_width, $track_height, $border_left, $border_top, $border_right, $border_bottom) => ($status, $new_time)
$X->RRSetOutputPrimary($window, $output)
$X->RRGetOutputPrimary($window) => ($length, $output, @pads)
X11::Protocol::Ext::RANDR provides the following events:
The following events were added in Version 1.0 of the specification. This event uses a single event number.
RRScreenChangeNotify => { name=>'RRScreenChangeNotify', new_rotation_and_reflection=>$rotation, # Rotation timestamp=>$timestamp, configuration_timestamp=>$timestamp, root_window=>$window, request_window=>$window, size_id=>$sizeid, # SizeID subpixel_order_defined_in_render=>$subpixelorder, width_in_pixels=>$width, height_in_pixels=>$height, width_in_millimeters=>$width_mm, height_in_millimeters=>$height_mm}
The following events were added in Version 1.2 of the specification. Unfortunately they chose to multiplex the events under only one additional event number. Therefore, the format of these events depend on the value of the sub_code field which is of type RR1dot2EventType.
sub_code
RR1dot2EventType
RRCrtcChangeNotify => { name=>'RR1dot2EventNotify', sub_code=>$RR1dot2EventType, # 0 or 'RRCrtcChangeNotify' timestamp=>$timestamp, request_window=>$window, crtc_affected=>$crtc, mode_in_use=>$mode, # Mode new_rotation_and_reflection=>$rotation, # Rotation x=>$x, y=>$y, width=>$width, height=>$height}
RROutputChangeNotify => { name=>'RR1dot2EventNotify', sub_code=>$RR1dot2EventType, # 1 or 'RROutputChangeNotify timestamp=>$time, configuration_timestamp=>$config_time, request_window=>$window, output_affected=>$output, crtc_in_use=>$crtc, mode_in_use=>$mode, rotation_in_use=>$rotation, # Rotation connection_status=>$status, # Connection subpixel_order=>$subpixel_order}
RROutputPropertyNotify => { name=>'RR1dot2EventNotify', sub_code=>$RR1dot2EventType, # 2 or 'RROutputPropertyNotify window=>$window, output=>$output, atom=>$atom, timestamp=>$time}
Probably lots: this module has not been thoroughly tested. At least it loads and initializes on server supporting the correct version.
Brian Bidulock <bidulock@openss7.org>
perl(1), X11::Protocol(3pm), X Synchronization Extension Protocol.
To install X11::Protocol::Enhanced, copy and paste the appropriate command in to your terminal.
cpanm
cpanm X11::Protocol::Enhanced
CPAN shell
perl -MCPAN -e shell install X11::Protocol::Enhanced
For more information on module installation, please visit the detailed CPAN module installation guide.