<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/perl

package X11::Protocol::Ext::XFree86_Misc; # XFree86-Misc 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) = { };

  my(@tmp) = ('MICROSOFT','MOUSESYS','MMSERIES','LOGITECH','BUSMOUSE',
	      'PS/2','MMHIT','GLIDEPOINT','IMSERIAL','THINKING',
	      'IMPS2','THINKINGPS2','MMANPLUSPS2','GLIDEPOINTPS2',
	      'NETPS2','NETSCROLLPS2','SYSMOUSE','AUTOMOSE');
  @tmp[127..128] = ('XQUEUE','OSMOUSE');

  # Constants
  $x-&gt;{'ext_const'}{'MouseTypes'} = [@tmp];
  $x-&gt;{'ext_const_num'}{'MouseTypes'} =
    {make_num_hash($x-&gt;{'ext_const'}{'MouseTypes'})};

  $x-&gt;{'ext_const'}{'KeyboardTypes'} = ['Unknown','84 Key','101 Key',
					'Other', 'XQUEUE'];
  $x-&gt;{'ext_const_num'}{'KeyboardTypes'} =
    {make_num_hash($x-&gt;{'ext_const'}{'KeyboardTypes'})};

  my(@tmp); @tmp[1,2,128] = ('Clear DTR','Clear RTS','Reopen');
  $x-&gt;{'ext_const'}{'MouseFlags'} = [@tmp];
  $x-&gt;{'ext_const_num'}{'MouseFlags'} =
    {make_num_hash($x-&gt;{'ext_const'}{'MouseFlags'})};

  # Events

  # Requests
  $x-&gt;{'ext_request'}{$request_num} =
    [
     ["XF86MiscQueryVersion", sub {
	my($self) = shift;
	return "";
      }, sub {
	my($self) = shift;
	my($data) = @_;
	my($major,$minor) = unpack("xxxxxxxxSSxxxxxxxxxxxxxxxxxxxx",$data);
        return($major,$minor);
      }],
     ["XF86MiscGetSaver", sub {
	my($self) = shift;
	my($screen) = @_;
	return pack("Sxx",$screen);
      }, sub {
	my($self) = shift;
	my($data) = @_;
	my($suspend,$off) = unpack("xxxxxxxxLLxxxxxxxxxxxxxxxx",$data);
	return($suspend,$off);
      }],
     ["XF86MiscSetSaver", sub {
	my($self) = shift;
	my($screen,$suspend,$off) = @_;
	return pack("SxxLL",$screen,$suspend,$off);
      }],
     ["XF86MiscGetMouseSettings", sub {
	return "";
      }, sub {
	my($self) = shift;
	my($data) = @_;
	my($type,$baudrate,$samplerate,$resolution,$buttons,
	   $emulate3,$chord,$emulate3timeout,$flags,$devnamelen)
	  = unpack("xxxxxxxxLLLLLCCxxLLL",$data);
	return(mousetype=&gt;$self-&gt;interp('MouseTypes',$type),
	       baudrate=&gt;$baudrate,samplerate=&gt;$samplerate,
	       resolution=&gt;$resolution,buttons=&gt;$buttons,
	       emulate3buttons=&gt;$emulate3,chordmiddle=&gt;$chord,
	       emulate3timeout=&gt;$emulate3timeout,flags=&gt;$flags,
	       device=&gt;substr($data,44,$devnamelen-1));
      }],
     ["XF86MiscGetKbdSettings", sub {
	return "";
      }, sub {
	my($self) = shift;
	my($data) = @_;
	my($type,$rate,$delay,$servnumlock) =
	  unpack("xxxxxxxxLLLCxxxxxxxxxxxx",$data);
	return($type,$rate,$delay,$servnumlock);
      }],
     ["XF86MiscSetMouseSettings", sub {
	my($self) = shift;
	my(%args) = @_;
	return pack("LLLLLCCxxLL",$self-&gt;pack('MouseTypes',$args{mousetype}),
		    $args{baudrate},$args{samplerate},$args{resolution},
		    $args{buttons},$args{emulate3buttons},$args{chordmiddle},
		    $args{emulate3timeout},$args{flags});
      }],
     ["XF86MiscSetKbdSettings", sub {
	my($self) = shift;
	my($type,$rate,$delay,$servnumlock) = @_;
	return pack("LLLCxxx",$self-&gt;pack('KeyboardTypes',$type),
		    $rate,$delay,$servnumlock);
      }]
    ];

  my($i);
  for $i (0..$#{$x-&gt;{'ext_request'}{$request_num}}) {
    $x-&gt;{'ext_request_num'}{$x-&gt;{'ext_request'}{$request_num}[$i][0]}
      = [$request_num, $i];
  }
  ($self-&gt;{'major'}, $self-&gt;{'minor'}) = $x-&gt;req('XF86MiscQueryVersion');
  return(bless $self, $pkg);
}

1;
__END__

=head1 NAME

X11::Protocol::Ext::XFree86_Misc.pm - Perl module for the XFree86 Misc Extension

=head1 SYNOPSIS

  use X11::Protocol;
  $x = X11::Protocol-&gt;new();
  $x-&gt;init_extension('XFree86-Misc');

=head1 DESCRIPTION

This module is used to access miscellaneous features of XFree86 servers

=head1 SYMBOLIC CONSTANTS

This extension adds the MouseTypes, KeyboardTypes and MouseFlags constants,
with values as defined in the XFree86 3.3.3 source code.

=head1 REQUESTS

This extension adds several requests, called as shown below:

  $x-&gt;XF86MiscQueryVersion =&gt; ($major, $minor)

  $x-&gt;XF86MiscGetSaver($screen) =&gt; ($suspendtime, $offtime)

  $x-&gt;XF86MiscSetSaver($screen, $suspendtime, $offtime)

  $x-&gt;XF86MiscGetMouseSettings =&gt; (%settings)

  $x-&gt;XF86MiscSetMouseSettings(%settings)

  $x-&gt;XF86MiscGetKbdSettings =&gt; ($type, $rate, $delay, $servnumlock)

  $x-&gt;XF86MiscSetKbdSettings($type, $rate, $delay, $servnumlock)

=head1 AUTHOR

Jay Kominek &lt;jay.kominek@colorado.edu&gt;

=head1 SEE ALSO

L&lt;perl(1)&gt;,
L&lt;X11::Protocol&gt;
</pre></body></html>