X11::Protocol::Ext::DPMS - Perl module for the X11 Protocol DPMS Extension


X11-Protocol documentation Contained in the X11-Protocol distribution.

Index


Code Index:

NAME

Top

X11::Protocol::Ext::DPMS - Perl module for the X11 Protocol DPMS Extension

SYNOPSIS

Top

  use X11::Protocol;
  $x = X11::Protocol->new();
  $x->init_extension('DPMS');

DESCRIPTION

Top

This module is used to control the DPMS features of compliant monitors.

SYMBOLIC CONSTANTS

Top

This extension adds the constant type DPMSPowerLevels, with values as defined in the standard.

REQUESTS

Top

This extension adds several requests, called as shown below:

  $x->DPMSGetVersion => ($major, $minor)

  $x->DPMSCapable => ($capable)

  $x->DPMSGetTimeouts => ($standby_timeout, $suspend_timeout, $off_timeout)

  $x->DPMSSetTimeouts($standby_timeout, $suspend_timeout, $off_timeout) => ()

  $x->DPMSEnable => ()

  $x->DPMSDisable => ()

  $x->DPMSForceLevel($power_level) => ()

  $x->DPMSInfo => ($power_level,$state)

AUTHOR

Top

Jay Kominek <jay.kominek@colorado.edu>

SEE ALSO

Top

perl(1), X11::Protocol, X Display Power Management Signaling (DPMS) Extension (X Consortium Standard)


X11-Protocol documentation Contained in the X11-Protocol distribution.

#!/usr/bin/perl

package X11::Protocol::Ext::DPMS; # The Display Power Management Signaling
                                  # Extension

# This module was originally written in 1998 by Jay Kominek.  As of
# February 10th, 2003, he has placed it in the public domain.

use X11::Protocol qw(pad padding padded make_num_hash);
use Carp;

use strict;
use vars '$VERSION';

$VERSION = 0.01;

sub new
{
  my($pkg, $x, $request_num, $event_num, $error_num) = @_;
  my($self) = {};
  
  # Constants
  $x->{'ext_const'}{'DPMSPowerLevels'} = ['DPMSModeOn','DPMSModeStandby',
					  'DPMSModeSuspend','DPMSModeOff'];
  $x->{'ext_const_num'}{'DPMSPowerLevels'} =
    {make_num_hash($x->{'ext_const'}{'DPMSPowerLevels'})};
  
  # Events
  
  # Requests
  $x->{'ext_request'}{$request_num} =
    [
     ["DPMSGetVersion", sub {
	my($self) = shift;
	return pack("SS",1,1);
      }, sub {
	my($self) = shift;
	my($data) = @_;
	my($major,$minor) = unpack("xxxxxxxxSSxxxxxxxxxxxxxxxxxxxx",$data);
	return($major,$minor);
      }],
     ["DPMSCapable", sub {
	my($self) = shift;
	return "";
      }, sub {
	my($self) = shift;
	my($data) = @_;
	my($capable) = unpack("xxxxxxxxCxxxxxxxxxxxxxxxxxxxxxxx",$data);
	return($capable);
      }],
     ["DPMSGetTimeouts", sub {
	my($self) = shift;
	return "";
      }, sub {
	my($self) = shift;
	my($data) = @_;
	my($standby,$suspend,$off) =
	  unpack("xxxxxxxxSSSxxxxxxxxxxxxxxxxxx",$data);
	return($standby,$suspend,$off);
      }],
     ["DPMSSetTimeouts", sub {
	my($self) = shift;
	my($standby,$suspend,$off) = @_;
	return pack("SSSxx",$standby,$suspend,$off);
      }],
     ["DPMSEnable", sub {
	my($self) = shift;
	return "";
      }],
     ["DPMSDisable", sub {
	my($self) = shift;
	return "";
      }],
     ["DPMSForceLevel", sub {
	my($self) = shift;
	return(pack("Sxx",$self->num('DPMSPowerLevels',@_[0])));
      }],
     ["DPMSInfo", sub {
	my($self) = shift;
	return "";
      }, sub {
	my($self) = shift;
	my($data) = @_;
	my($power_level,$state) =
	  unpack("xxxxxxxxSCxxxxxxxxxxxxxxxxxxxxx",$data);
	return($self->interp('DPMSPowerLevels',$power_level),$state);
      }]
    ];
  my($i);
  for $i (0 .. $#{$x->{'ext_request'}{$request_num}})
    {
      $x->{'ext_request_num'}{$x->{'ext_request'}{$request_num}[$i][0]}
	= [$request_num, $i];
    }
  ($self->{'major'}, $self->{'minor'}) = $x->req('DPMSGetVersion');
  return bless $self, $pkg;
}

1;
__END__