1ea1d6981Smrg<?xml version="1.0" encoding="UTF-8" ?>
2ea1d6981Smrg<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
3ea1d6981Smrg                   "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
4ea1d6981Smrg[
5ea1d6981Smrg<!ENTITY % defs SYSTEM "defs.ent"> %defs;
6ea1d6981Smrg]>
7ea1d6981Smrg
8ea1d6981Smrg<book id="dpms">
9ea1d6981Smrg
10ea1d6981Smrg<bookinfo>
11ea1d6981Smrg   <title>X Display Power Management Signaling (DPMS) Extension Protocol Specification</title>
12ea1d6981Smrg   <subtitle>X Project Team Standard</subtitle>
13ea1d6981Smrg   <authorgroup>
14ea1d6981Smrg      <author>
15ea1d6981Smrg         <firstname>Rob </firstname><surname>Lembree</surname>
16ea1d6981Smrg         <affiliation><orgname>Digital Equipment Corporation</orgname></affiliation>
17ea1d6981Smrg         <email>lembree@zk3.dec.com</email>
18ea1d6981Smrg      </author>
19ea1d6981Smrg   </authorgroup>
20ea1d6981Smrg   <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
21ea1d6981Smrg   <releaseinfo>Version 1.0</releaseinfo>
22ea1d6981Smrg   <copyright><year>1996</year><holder>Digital Equipment Corporation</holder></copyright>
23ea1d6981Smrg
24ea1d6981Smrg<legalnotice>
25ea1d6981Smrg<para>
26ea1d6981SmrgPermission to use, copy, modify, distribute, and sell this
27ea1d6981Smrgdocumentation for any purpose is hereby granted without fee,
28ea1d6981Smrgprovided that the above copyright notice and this permission
29ea1d6981Smrgnotice appear in all copies.  Digital Equipment Corporation
30ea1d6981Smrgmakes no representations about the suitability for any purpose
31ea1d6981Smrgof the information in this document.  This documentation is
32ea1d6981Smrgprovided &ldquo;as is&rdquo; without express or implied warranty.
33ea1d6981Smrg</para>
34ea1d6981Smrg
35ea1d6981Smrg</legalnotice>
36ea1d6981Smrg</bookinfo>
37ea1d6981Smrg
38ea1d6981Smrg<chapter id="Overview">
39ea1d6981Smrg<title>Overview</title>
40ea1d6981Smrg<para>
41ea1d6981SmrgThis extension provides X Protocol control over the VESA Display
42ea1d6981SmrgPower Management Signaling (DPMS) characteristics of video boards
43ea1d6981Smrgunder control of the X Window System.<footnote>
44ea1d6981Smrg<para>
45ea1d6981Smrg<emphasis remap='I'>X Window System</emphasis> is a trademark of The Open Group.
46ea1d6981Smrg</para>
47ea1d6981Smrg</footnote>
48ea1d6981Smrg</para>
49ea1d6981Smrg
50ea1d6981Smrg
51ea1d6981Smrg<para>
52ea1d6981Smrg<!-- .LP -->
53ea1d6981SmrgTraditionally, the X Window System has provided for both blanking and
54ea1d6981Smrgnon-blanking screen savers.  Timeouts associated with these built-in
55ea1d6981Smrgscreen saver mechanisms are limited to idle (dwell) time, and a change
56ea1d6981Smrgtimeout that specifies the change interval for non-blanking screen savers.
57ea1d6981Smrg</para>
58ea1d6981Smrg<para>
59ea1d6981Smrg<!-- .LP -->
60ea1d6981SmrgThe United States' Environmental Protection Agency (EPA) Energy Star program
61ea1d6981Smrgrequires that monitors power down after some idle time by default.
62ea1d6981SmrgWhile it is possible to simply overload the existing screen saver timeouts,
63ea1d6981Smrgthis solution leaves the non-privileged user little to no control over
64ea1d6981Smrgthe DPMS characteristics of his or her system.  For example, disabling
65ea1d6981SmrgDPMS would require some unintended side effect in the core screen saver,
66ea1d6981Smrgsuch as disabling the changing of a non-blanking screen saver.  Providing
67ea1d6981Smrgclients with this control requires an extension to the core X Window System
68ea1d6981SmrgProtocol, and this extension seeks to fill this gap.
69ea1d6981Smrg</para>
70ea1d6981Smrg<para>
71ea1d6981Smrg<!-- .LP -->
72ea1d6981SmrgThe design goal of the DPMS extension is to be a logical extension to
73ea1d6981Smrgthe traditional screen saver.  The protocol and sample implementation is
74ea1d6981Smrgdesigned to use the same date types and time units as the screen saver.
75ea1d6981SmrgThe sample implementation works independently from the screen saver so that
76ea1d6981Smrgpolicy as it pertains to the interaction between screen saver and DPMS can
77ea1d6981Smrgbe deferred to the user or screen saver application. The extension has
78ea1d6981Smrgbeen tested with and shown to work correctly with both the internal blanking
79ea1d6981Smrgand non-blanking screen savers, as well as with screen saver extension
80ea1d6981Smrgclients.
81ea1d6981Smrg</para>
82ea1d6981Smrg<para>
83ea1d6981SmrgThe DPMS extension is designed to be simple, yet export sufficient
84ea1d6981SmrgVESA DPMS information to enable full function clients to be written.
85ea1d6981SmrgIncluded is the ability to sense DPMS capability, set and get DPMS timeouts,
86ea1d6981Smrgenable and disable individual DPMS modes, enable and disable DPMS (without
87ea1d6981Smrgdestroying timeout values), and sense current DPMS on/off state and
88ea1d6981Smrgpower level.
89ea1d6981Smrg</para>
90ea1d6981Smrg<para>
91ea1d6981SmrgThere are four power levels specified by the Video Electronics Standards
92ea1d6981SmrgAssociation (VESA) Display Power Management Signaling (DPMS) standard.
93ea1d6981SmrgThese are:
94ea1d6981Smrg</para>
95ea1d6981Smrg
96ea1d6981Smrg<literallayout class="monospaced">
97ea1d6981Smrg<function>DPMS Extension Power Levels</function>
98ea1d6981Smrg     0     DPMSModeOn          In use
99ea1d6981Smrg     1     DPMSModeStandby     Blanked, low power
100ea1d6981Smrg     2     DPMSModeSuspend     Blanked, lower power
101ea1d6981Smrg     3     DPMSModeOff         Shut off, awaiting activity
102ea1d6981Smrg</literallayout>
103ea1d6981Smrg
104ea1d6981Smrg<para>
105ea1d6981SmrgIt is logical to assume that successive DPMS modes be chronologically
106ea1d6981Smrgat the same time or later than one another, and the protocol is designed
107ea1d6981Smrgto enforce this rule.
108ea1d6981Smrg</para>
109ea1d6981Smrg
110ea1d6981Smrg<para>
111d63b911fSmrgNote however that a conscious decision is made to decouple the timeouts
112ea1d6981Smrgassociated with screen saver from the DPMS timeouts.  While it might be
113ea1d6981Smrgconsidered logical to require that the first non-zero DPMS timeout be
114ea1d6981Smrggreater than or equal to the screen saver timeout, this is intentionally
115ea1d6981Smrgomitted, leaving this policy decision to the user or the screen saver
116ea1d6981Smrgapplication.  In the case of a laptop where power may be scarce, the
117ea1d6981Smrgimportance of power savings should supersede the screen saver.  If the
118ea1d6981Smrglaptop user plugs the unit in and power is no longer a scarce commodity,
119ea1d6981Smrgit may be decided to make DPMS less aggressive, or disable it completely.
120ea1d6981Smrg</para>
121ea1d6981Smrg</chapter>
122ea1d6981Smrg
123ea1d6981Smrg<chapter id="Requests">
124ea1d6981Smrg<title>Requests</title>
125ea1d6981Smrg<para>
126ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSGetVersion'><function>DPMSGetVersion</function></olink>
127ea1d6981Smrg</para>
128ea1d6981Smrg
129ea1d6981Smrg<informaltable frame="none">
130ea1d6981Smrg  <?dbfo keep-together="always" ?>
131ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
132ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
133ea1d6981Smrg  <tbody>
134ea1d6981Smrg    <row>
135ea1d6981Smrg      <entry>
136ea1d6981Smrg<emphasis remap='I'>client_major_version</emphasis>: CARD16
137ea1d6981Smrg      </entry>
138ea1d6981Smrg    </row>
139ea1d6981Smrg    <row>
140ea1d6981Smrg      <entry>
141ea1d6981Smrg<emphasis remap='I'>client_minor_version</emphasis>: CARD16
142ea1d6981Smrg      </entry>
143ea1d6981Smrg    </row>
144ea1d6981Smrg    <row>
145ea1d6981Smrg      <entry>=&gt;</entry>
146ea1d6981Smrg    </row>
147ea1d6981Smrg    <row>
148ea1d6981Smrg      <entry>
149ea1d6981Smrg<emphasis remap='I'>server_major_version</emphasis>: CARD16
150ea1d6981Smrg      </entry>
151ea1d6981Smrg    </row>
152ea1d6981Smrg    <row>
153ea1d6981Smrg      <entry>
154ea1d6981Smrg<emphasis remap='I'>server_minor_version</emphasis>: CARD16
155ea1d6981Smrg      </entry>
156ea1d6981Smrg    </row>
157ea1d6981Smrg  </tbody>
158ea1d6981Smrg  </tgroup>
159ea1d6981Smrg</informaltable>
160ea1d6981Smrg
161ea1d6981Smrg<para>
162ea1d6981SmrgIf supplied, the <emphasis remap='I'>client_major_version</emphasis> and
163ea1d6981Smrg<emphasis remap='I'>client_minor_version</emphasis> indicate what version
164ea1d6981Smrgof the protocol the
165ea1d6981Smrgclient wants the server to implement.  The server version numbers
166ea1d6981Smrgreturned indicate the protocol this extension actually supports.  This
167ea1d6981Smrgmight not equal the version sent by the client.  An implementation can
168ea1d6981Smrg(but need not) support more than one version simultaneously.  The
169ea1d6981Smrg<emphasis remap='I'>server_major_version</emphasis> and the
170ea1d6981Smrg<emphasis remap='I'>server_minor_version</emphasis> are a
171ea1d6981Smrgmechanism to support future revisions of the Display Power Management
172ea1d6981SmrgSignaling protocol which may be necessary.  In general, the major version
173ea1d6981Smrgwould increment for incompatible changes, and the minor version would
174ea1d6981Smrgincrement for small, upward-compatible changes.  Servers that support the
175ea1d6981Smrgprotocol defined in this document will return a
176ea1d6981Smrg<emphasis remap='I'>server_major_version</emphasis>
177ea1d6981Smrgof one (1), and a <emphasis remap='I'>server_minor_version</emphasis>
1784627b59cSmrgof two (2).
179ea1d6981Smrg</para>
180ea1d6981Smrg
181ea1d6981Smrg<para>
182ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSCapable'><function>DPMSCapable</function></olink>
183ea1d6981Smrg</para>
184ea1d6981Smrg
185ea1d6981Smrg<informaltable frame="none">
186ea1d6981Smrg  <?dbfo keep-together="always" ?>
187ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
188ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
189ea1d6981Smrg  <tbody>
190ea1d6981Smrg    <row>
191ea1d6981Smrg      <entry>=&gt;</entry>
192ea1d6981Smrg    </row>
193ea1d6981Smrg    <row>
194ea1d6981Smrg      <entry>
195ea1d6981Smrg<emphasis remap='I'>capable</emphasis>: BOOL
196ea1d6981Smrg      </entry>
197ea1d6981Smrg    </row>
198ea1d6981Smrg  </tbody>
199ea1d6981Smrg  </tgroup>
200ea1d6981Smrg</informaltable>
201ea1d6981Smrg
202ea1d6981Smrg<para>
203ea1d6981SmrgThis request is used to determine whether or not the currently running
204ea1d6981Smrgserver's devices are capable of DPMS operations.  The truth value of this
205ea1d6981Smrgrequest is implementation defined, but is generally based on the capabilities
206ea1d6981Smrgof the graphic card and monitor combination.  Also, the return value in the
207ea1d6981Smrgcase of heterogeneous multi-head servers is implementation defined.
208ea1d6981Smrg</para>
209ea1d6981Smrg
210ea1d6981Smrg<para>
211ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSGetTimeouts'><function>DPMSGetTimeouts</function></olink>
212ea1d6981Smrg</para>
213ea1d6981Smrg
214ea1d6981Smrg<informaltable frame="none">
215ea1d6981Smrg  <?dbfo keep-together="always" ?>
216ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
217ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
218ea1d6981Smrg  <tbody>
219ea1d6981Smrg    <row>
220ea1d6981Smrg      <entry>=&gt;</entry>
221ea1d6981Smrg    </row>
222ea1d6981Smrg    <row>
223ea1d6981Smrg      <entry>
224ea1d6981Smrg<emphasis remap='I'>standby_timeout</emphasis>: CARD16
225ea1d6981Smrg      </entry>
226ea1d6981Smrg    </row>
227ea1d6981Smrg    <row>
228ea1d6981Smrg      <entry>
229ea1d6981Smrg<emphasis remap='I'>suspend_timeout</emphasis>: CARD16
230ea1d6981Smrg      </entry>
231ea1d6981Smrg    </row>
232ea1d6981Smrg    <row>
233ea1d6981Smrg      <entry>
234ea1d6981Smrg<emphasis remap='I'>off_timeout</emphasis>: CARD16
235ea1d6981Smrg      </entry>
236ea1d6981Smrg    </row>
237ea1d6981Smrg  </tbody>
238ea1d6981Smrg  </tgroup>
239ea1d6981Smrg</informaltable>
240ea1d6981Smrg
241ea1d6981Smrg<para>
242ea1d6981SmrgThis request returns the current values of the DPMS timeout values.  All
243ea1d6981Smrgvalues are in units of seconds.
244ea1d6981Smrg</para>
245ea1d6981Smrg
246ea1d6981Smrg<para>
247ea1d6981Smrg<emphasis remap='I'>standby_timeout</emphasis> is the amount of time
248ea1d6981Smrgof inactivity before standby
249ea1d6981Smrgmode is invoked. The actual effects of this mode are implementation defined,
250ea1d6981Smrgbut in the case of DPMS compliant hardware, it is implemented by shutting off
251ea1d6981Smrgthe horizontal sync signal, and pulsing the vertical sync signal. Standby
252ea1d6981Smrgmode provides the quickest monitor recovery time.  Note also that many
253ea1d6981Smrgmonitors implement this mode identically to suspend mode.  A value of
254ea1d6981Smrgzero indicates that this mode is disabled.
255ea1d6981Smrg</para>
256ea1d6981Smrg
257ea1d6981Smrg<para>
258ea1d6981Smrg<emphasis remap='I'>suspend_timeout</emphasis> is the amount of time
259ea1d6981Smrgof inactivity before the second
260ea1d6981Smrglevel of power savings is invoked. Suspend mode's physical and electrical
261ea1d6981Smrgcharacteristics are implementation defined, but in DPMS compliant hardware,
262ea1d6981Smrgresults in the pulsing of the horizontal sync signal, and shutting off of
263ea1d6981Smrgthe vertical sync signal.  Suspend mode recovery is considered to be slower
264ea1d6981Smrgthan standby mode, but faster than off mode, however this is monitor
265ea1d6981Smrgdependent.  As noted above, many monitors implement this mode identically to
266ea1d6981Smrgstandby mode.  A value of zero indicates that this mode is disabled.
267ea1d6981Smrg</para>
268ea1d6981Smrg
269ea1d6981Smrg<para>
270ea1d6981Smrg<emphasis remap='I'>off_timeout</emphasis> is the amount of time of
271ea1d6981Smrginactivity before the third and
272ea1d6981Smrgfinal level of power savings is invoked. Off mode's physical and electrical
273ea1d6981Smrgcharacteristics are implementation defined, but in DPMS compliant hardware,
274ea1d6981Smrgis implemented by shutting off both horizontal and vertical sync signals,
275ea1d6981Smrgresulting in the power-down of the monitor.  Recovery time is implementation
276d63b911fSmrgdependent, but frequently is similar to the power-up time of the monitor. A
277ea1d6981Smrgvalue of zero indicates that this mode is disabled.
278ea1d6981Smrg</para>
279ea1d6981Smrg
280ea1d6981Smrg<para>
281ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSSetTimeouts'><function>DPMSSetTimeouts</function></olink>
282ea1d6981Smrg</para>
283ea1d6981Smrg
284ea1d6981Smrg<informaltable frame="none">
285ea1d6981Smrg  <?dbfo keep-together="always" ?>
286ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
287ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
288ea1d6981Smrg  <tbody>
289ea1d6981Smrg    <row>
290ea1d6981Smrg      <entry>
291ea1d6981Smrg<emphasis remap='I'>standby_timeout</emphasis>: CARD16
292ea1d6981Smrg      </entry>
293ea1d6981Smrg    </row>
294ea1d6981Smrg    <row>
295ea1d6981Smrg      <entry>
296ea1d6981Smrg<emphasis remap='I'>suspend_timeout</emphasis>: CARD16
297ea1d6981Smrg      </entry>
298ea1d6981Smrg    </row>
299ea1d6981Smrg    <row>
300ea1d6981Smrg      <entry>
301ea1d6981Smrg<emphasis remap='I'>off_timeout</emphasis>: CARD16
302ea1d6981Smrg      </entry>
303ea1d6981Smrg    </row>
304ea1d6981Smrg    <row>
305ea1d6981Smrg      <entry>=&gt;</entry>
306ea1d6981Smrg    </row>
307ea1d6981Smrg  </tbody>
308ea1d6981Smrg  </tgroup>
309ea1d6981Smrg</informaltable>
310ea1d6981Smrg
311ea1d6981Smrg
312ea1d6981Smrg<para>
313ea1d6981SmrgAll values are in units of seconds.
314ea1d6981Smrg<emphasis remap='I'>standby_timeout</emphasis> is the amount of
315ea1d6981Smrgtime of inactivity before standby mode will be invoked. This is the
316ea1d6981Smrglightest level of power savings, and the monitor is generally immediately
317ea1d6981Smrgready upon detection of user activity.  This is most often implemented by
318ea1d6981Smrgshutting off the horizontal sync signal to the monitor.
319ea1d6981SmrgA value of zero disables this mode.
320ea1d6981Smrg</para>
321ea1d6981Smrg
322ea1d6981Smrg<para>
323ea1d6981SmrgThe <emphasis remap='I'>suspend_timeout</emphasis> specifies the amount
324ea1d6981Smrgof time of inactivity
325ea1d6981Smrgbefore the screen is placed into suspend mode.  Suspend mode is the
326ea1d6981Smrgmiddle level of power savings, resulting in a slightly longer recovery
327ea1d6981Smrgupon detection of activity.  Suspend mode is most often implemented by
328ea1d6981Smrgpulsing the horizontal sync signal, and removing the vertical sync
329ea1d6981Smrgsignal. A value of zero disables this mode.
330ea1d6981Smrg</para>
331ea1d6981Smrg
332ea1d6981Smrg<para>
333ea1d6981SmrgThe <emphasis remap='I'>off_timeout</emphasis> specifies the amount of
334ea1d6981Smrgtime of inactivity before
335ea1d6981Smrgthe monitor is shut off.  Off mode is the deepest level of power management,
336ea1d6981Smrgresulting in the greatest power savings and the longest recovery time.
337ea1d6981SmrgOff mode is most often implemented by removing both the horizontal and
338ea1d6981Smrgvertical signals. A value of zero disables this mode.
339ea1d6981Smrg</para>
340ea1d6981Smrg<para>
341ea1d6981SmrgThe values of successive power levels must be greater than or equal
342ea1d6981Smrgto the value of the previous (non-zero) level.  A BadValue error is generated
343ea1d6981Smrgif an illegal combination is detected.
344ea1d6981Smrg</para>
345ea1d6981Smrg<para>
346ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSEnable'><function>DPMSEnable</function></olink>
347ea1d6981Smrg</para>
348ea1d6981Smrg<para>
349ea1d6981Smrg=&gt;
350ea1d6981Smrg</para>
351ea1d6981Smrg
352ea1d6981Smrg<para>
353ea1d6981SmrgThis request enables the DPMS characteristics of the server, using the
354ea1d6981Smrgserver's currently stored timeouts.  If DPMS is already enabled, no change is
355ea1d6981Smrgeffected.
356ea1d6981Smrg</para>
357ea1d6981Smrg
358ea1d6981Smrg<para>
359ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSDisable'><function>DPMSDisable</function></olink>
360ea1d6981Smrg</para>
361ea1d6981Smrg<para>
362ea1d6981Smrg=&gt;
363ea1d6981Smrg</para>
364ea1d6981Smrg
365ea1d6981Smrg<para>
366ea1d6981SmrgThis request disables the DPMS characteristics of the server.  It does
367ea1d6981Smrgnot affect the core or extension screen savers.  If DPMS is already
368ea1d6981Smrgdisabled, no change is effected.  This request is provided so that DPMS
369ea1d6981Smrgmay be disabled without damaging the server's stored timeout values.
370ea1d6981Smrg</para>
371ea1d6981Smrg
372ea1d6981Smrg<para>
373ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSForceLevel'><function>DPMSForceLevel</function></olink>
374ea1d6981Smrg</para>
375ea1d6981Smrg
376ea1d6981Smrg<informaltable frame="none">
377ea1d6981Smrg  <?dbfo keep-together="always" ?>
378ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
379ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
380ea1d6981Smrg  <tbody>
381ea1d6981Smrg    <row>
382ea1d6981Smrg      <entry>
383ea1d6981Smrg<emphasis remap='I'>power_level</emphasis>: CARD16
384ea1d6981Smrg      </entry>
385ea1d6981Smrg    </row>
386ea1d6981Smrg    <row>
387ea1d6981Smrg      <entry>=&gt;</entry>
388ea1d6981Smrg    </row>
389ea1d6981Smrg  </tbody>
390ea1d6981Smrg  </tgroup>
391ea1d6981Smrg</informaltable>
392ea1d6981Smrg
393ea1d6981Smrg<para>
394ea1d6981SmrgThis request forces a specific DPMS level on the server.  If DPMS is
395ea1d6981Smrgdisabled, a BadMatch error is generated.  If an erroneous power level
396ea1d6981Smrgis specified, a BadValue error is returned, and the error value contains
397ea1d6981Smrgthe bad value.  If the power level specified is already in effect, no
398ea1d6981Smrgchanges occur.  Power Level must be one of DPMSModeOn, DPMSModeStandby,
399ea1d6981SmrgDPMSModeSuspend or DPMSModeOff.
400ea1d6981Smrg</para>
401ea1d6981Smrg
402ea1d6981Smrg<para>
403ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSInfo'><function>DPMSInfo</function></olink>
404ea1d6981Smrg</para>
405ea1d6981Smrg
406ea1d6981Smrg<informaltable frame="none">
407ea1d6981Smrg  <?dbfo keep-together="always" ?>
408ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
409ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
410ea1d6981Smrg  <tbody>
411ea1d6981Smrg    <row>
412ea1d6981Smrg      <entry>=&gt;</entry>
413ea1d6981Smrg    </row>
414ea1d6981Smrg    <row>
415ea1d6981Smrg      <entry>
416ea1d6981Smrg<emphasis remap='I'>power_level</emphasis>: CARD16
417ea1d6981Smrg      </entry>
418ea1d6981Smrg    </row>
419ea1d6981Smrg    <row>
420ea1d6981Smrg      <entry>
421ea1d6981Smrg<emphasis remap='I'>state</emphasis>: BOOL
422ea1d6981Smrg      </entry>
423ea1d6981Smrg    </row>
424ea1d6981Smrg  </tbody>
425ea1d6981Smrg  </tgroup>
426ea1d6981Smrg</informaltable>
427ea1d6981Smrg
428ea1d6981Smrg<para>
429ea1d6981SmrgThis request returns information about the current DPMS state of the
430ea1d6981Smrgdisplay.  <emphasis remap='I'>state</emphasis> is one of DPMSEnabled
431ea1d6981Smrgor DPMSDisabled.
432ea1d6981SmrgIf <emphasis remap='I'>state</emphasis> is DPMSEnabled,
433ea1d6981Smrg<emphasis remap='I'>power_level</emphasis> is returned as one
434ea1d6981Smrgof DPMSModeOn, DPMSModeStandby, DPMSModeSuspend or DPMSModeOff, otherwise
435ea1d6981Smrgit is undefined.
436ea1d6981Smrg</para>
437ea1d6981Smrg
4384627b59cSmrg<para>
4394627b59cSmrg<olink targetdoc='dpmslib' targetptr='DPMSSelectInput'><function>DPMSSelectInput</function></olink>
4404627b59cSmrg</para>
4414627b59cSmrg
4424627b59cSmrg<informaltable frame="none">
4434627b59cSmrg  <?dbfo keep-together="always" ?>
4444627b59cSmrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4454627b59cSmrg  <colspec colname='c1' colwidth="1.0*"/>
4464627b59cSmrg  <tbody>
4474627b59cSmrg    <row>
4484627b59cSmrg      <entry>
4494627b59cSmrg<emphasis remap='I'>event_mask</emphasis>: CARD32
4504627b59cSmrg      </entry>
4514627b59cSmrg    </row>
4524627b59cSmrg    <row>
4534627b59cSmrg      <entry>=&gt;</entry>
4544627b59cSmrg    </row>
4554627b59cSmrg  </tbody>
4564627b59cSmrg  </tgroup>
4574627b59cSmrg</informaltable>
4584627b59cSmrg
4594627b59cSmrg<para>
4604627b59cSmrgThis request specifies whether DPMS extension events should be generated for this client.
4614627b59cSmrgIf DPMSInfoNotifyMask is set in <emphasis remap='I'>event-mask</emphasis>, then DPMSInfoNotifyEvent
4624627b59cSmrgevents will be generated whenever the current DPMS on/off state or power level changes.
4634627b59cSmrgIf no bits are set, then no events will be generated.
4644627b59cSmrg</para>
4654627b59cSmrg
466ea1d6981Smrg</chapter>
467ea1d6981Smrg
4684627b59cSmrg<chapter id="Events">
4694627b59cSmrg
4704627b59cSmrg<title>Events</title>
4714627b59cSmrg<para>
4724627b59cSmrgThe DPMS extension adds one event:
4734627b59cSmrg</para>
474ea1d6981Smrg<para>
4754627b59cSmrg<function>DPMSInfoNotifyEvent</function>
476ea1d6981Smrg</para>
4774627b59cSmrg
4784627b59cSmrg<informaltable frame="none">
4794627b59cSmrg  <?dbfo keep-together="always" ?>
4804627b59cSmrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4814627b59cSmrg  <colspec colname='c1' colwidth="1.0*"/>
4824627b59cSmrg  <tbody>
4834627b59cSmrg    <row>
4844627b59cSmrg      <entry>
4854627b59cSmrg<emphasis remap='I'>timestamp</emphasis>: TIMESTAMP
4864627b59cSmrg      </entry>
4874627b59cSmrg    </row>
4884627b59cSmrg    <row>
4894627b59cSmrg      <entry>
4904627b59cSmrg<emphasis remap='I'>power_level</emphasis>: CARD16
4914627b59cSmrg      </entry>
4924627b59cSmrg    </row>
4934627b59cSmrg    <row>
4944627b59cSmrg      <entry>
4954627b59cSmrg<emphasis remap='I'>state</emphasis>: BOOL
4964627b59cSmrg      </entry>
4974627b59cSmrg    </row>
4984627b59cSmrg  </tbody>
4994627b59cSmrg  </tgroup>
5004627b59cSmrg</informaltable>
5014627b59cSmrg
5024627b59cSmrg<para>
5034627b59cSmrgThis event is delivered to clients that have requested
5044627b59cSmrgDPMSInfoNotifyMask events using the <function>DPMSSelectInput</function> request
5054627b59cSmrgwhenever the current DPMS on/off state or power level changes.
5064627b59cSmrg<emphasis remap='I'>state</emphasis> is one of DPMSEnabled or DPMSDisabled.
5074627b59cSmrgIf <emphasis remap='I'>state</emphasis> is DPMSEnabled,
5084627b59cSmrg<emphasis remap='I'>power_level</emphasis> is one
5094627b59cSmrgof DPMSModeOn, DPMSModeStandby, DPMSModeSuspend or DPMSModeOff, otherwise
5104627b59cSmrgit is undefined.
5114627b59cSmrg</para>
5124627b59cSmrg
513ea1d6981Smrg</chapter>
514ea1d6981Smrg
515ea1d6981Smrg<chapter id="Encoding">
516ea1d6981Smrg<title>Encoding</title>
517ea1d6981Smrg<para>
518ea1d6981SmrgPlease refer to the X11 Protocol Encoding document as this document uses
519ea1d6981Smrgconventions established there.
520ea1d6981Smrg</para>
521ea1d6981Smrg
522ea1d6981Smrg<para>
523ea1d6981SmrgThe name of this extension is "DPMS".
524ea1d6981Smrg</para>
525ea1d6981Smrg
526ea1d6981Smrg<literallayout class="monospaced">
527ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSGetVersion'><function>DPMSGetVersion</function></olink>
528ea1d6981Smrg     1     CARD8         opcode
529ea1d6981Smrg     1     0             DPMS opcode
530ea1d6981Smrg     2     2             request length
531ea1d6981Smrg     2     CARD16        client_major_version
532ea1d6981Smrg     2     CARD16        client_minor_version
533ea1d6981Smrg=&gt;
534ea1d6981Smrg     1     1             Reply
535ea1d6981Smrg     1                   unused
536ea1d6981Smrg     2     CARD16        sequence number
537ea1d6981Smrg     4     0             length
538ea1d6981Smrg     2     CARD16        server_major_version
539ea1d6981Smrg     2     CARD16        server_minor_version
540ea1d6981Smrg     20                  unused
541ea1d6981Smrg</literallayout>
542ea1d6981Smrg
543ea1d6981Smrg<literallayout class="monospaced">
544ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSCapable'><function>DPMSCapable</function></olink>
545ea1d6981Smrg     1     CARD8         opcode
546ea1d6981Smrg     1     1             DPMS opcode
547ea1d6981Smrg     2     1             request length
548ea1d6981Smrg=&gt;
549ea1d6981Smrg     1     1             Reply
550ea1d6981Smrg     1                   unused
551ea1d6981Smrg     2     CARD16        sequence number
552ea1d6981Smrg     4     0             length
553ea1d6981Smrg     1     BOOL          capable
554ea1d6981Smrg     23                  unused
555ea1d6981Smrg</literallayout>
556ea1d6981Smrg
557ea1d6981Smrg<literallayout class="monospaced">
558ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSGetTimeouts'><function>DPMSGetTimeouts</function></olink>
559ea1d6981Smrg     1     CARD8         opcode
560ea1d6981Smrg     1     2             DPMS opcode
561ea1d6981Smrg     2     1             request length
562ea1d6981Smrg=&gt;
563ea1d6981Smrg     1     1             Reply
564ea1d6981Smrg     1                   unused
565ea1d6981Smrg     2     CARD16        sequence number
566ea1d6981Smrg     4     0             length
567ea1d6981Smrg     2     CARD16        standby_timeout
568ea1d6981Smrg     2     CARD16        suspend_timeout
569ea1d6981Smrg     2     CARD16        off_timeout
570ea1d6981Smrg     18                  unused
571ea1d6981Smrg</literallayout>
572ea1d6981Smrg
573ea1d6981Smrg<literallayout class="monospaced">
574ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSSetTimeouts'><function>DPMSSetTimeouts</function></olink>
575ea1d6981Smrg     1     CARD8         opcode
576ea1d6981Smrg     1     3             DPMS opcode
577ea1d6981Smrg     2     3             request length
578ea1d6981Smrg     2     CARD16        standby_timeout
579ea1d6981Smrg     2     CARD16        suspend_timeout
580ea1d6981Smrg     2     CARD16        off_timeout
581ea1d6981Smrg     2                   unused
582ea1d6981Smrg=&gt;
583ea1d6981Smrg</literallayout>
584ea1d6981Smrg
585ea1d6981Smrg<literallayout class="monospaced">
586ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSEnable'><function>DPMSEnable</function></olink>
587ea1d6981Smrg     1     CARD8         opcode
588ea1d6981Smrg     1     4             DPMS opcode
589ea1d6981Smrg     2     1             request length
590ea1d6981Smrg =&gt;
591ea1d6981Smrg</literallayout>
592ea1d6981Smrg
593ea1d6981Smrg<literallayout class="monospaced">
594ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSDisable'><function>DPMSDisable</function></olink>
595ea1d6981Smrg     1     CARD8         opcode
596ea1d6981Smrg     1     5             DPMS opcode
597ea1d6981Smrg     2     1             request length
598ea1d6981Smrg =&gt;
599ea1d6981Smrg</literallayout>
600ea1d6981Smrg
601ea1d6981Smrg<literallayout class="monospaced">
602ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSForceLevel'><function>DPMSForceLevel</function></olink>
603ea1d6981Smrg     1     CARD8         opcode
604ea1d6981Smrg     1     6             DPMS opcode
605ea1d6981Smrg     2     2             request length
606ea1d6981Smrg     2                   power_level
607ea1d6981Smrg          0     DPMSModeOn
608ea1d6981Smrg          1     DPMSModeStandby
609ea1d6981Smrg          2     DPMSModeSuspend
610ea1d6981Smrg          3     DPMSModeOff
611ea1d6981Smrg     2                   unused
612ea1d6981Smrg=&gt;
613ea1d6981Smrg</literallayout>
614ea1d6981Smrg
615ea1d6981Smrg<literallayout class="monospaced">
616ea1d6981Smrg<olink targetdoc='dpmslib' targetptr='DPMSInfo'><function>DPMSInfo</function></olink>
617ea1d6981Smrg     1     CARD8         opcode
618ea1d6981Smrg     1     7             DPMS opcode
619ea1d6981Smrg     2     1             request length
620ea1d6981Smrg=&gt;
621ea1d6981Smrg     1     1             Reply
622ea1d6981Smrg     1                   unused
623ea1d6981Smrg     2     CARD16        sequence number
624ea1d6981Smrg     4     0             length
625ea1d6981Smrg     2                   power_level
626ea1d6981Smrg           0     DPMSModeOn
627ea1d6981Smrg           1     DPMSModeStandby
628ea1d6981Smrg           2     DPMSModeSuspend
629ea1d6981Smrg           3     DPMSModeOff
630ea1d6981Smrg     1     BOOL          state
631ea1d6981Smrg     21                  unused
632ea1d6981Smrg
633ea1d6981Smrg</literallayout>
6344627b59cSmrg
6354627b59cSmrg<literallayout class="monospaced">
6364627b59cSmrg<olink targetdoc='dpmslib' targetptr='DPMSSelectInput'><function>DPMSSelectInput</function></olink>
6374627b59cSmrg     1     CARD8         opcode
6384627b59cSmrg     1     8             DPMS opcode
6394627b59cSmrg     2     2             request length
6404627b59cSmrg     4                   event mask
6414627b59cSmrg           0     no events
6424627b59cSmrg           1     DPMSInfoNotifyMask
6434627b59cSmrg</literallayout>
6444627b59cSmrg
6454627b59cSmrg<literallayout class="monospaced">
6464627b59cSmrg<olink targetdoc='dpmslib' targetptr='DPMSInfoNotifyEvent'><function>DPMSInfoNotifyEvent</function></olink>
6474627b59cSmrg     1     GenericEvent    type
6484627b59cSmrg     1     CARD8           DPMS extension offset
6494627b59cSmrg     2     CARD16          sequence number
6504627b59cSmrg     4     0               length
6514627b59cSmrg     2     DPMSInfoNotify  evtype
6524627b59cSmrg     2                     unused
6534627b59cSmrg     4     TIMESTAMP       timestamp
6544627b59cSmrg     2                     power_level
6554627b59cSmrg           0     DPMSModeOn
6564627b59cSmrg           1     DPMSModeStandby
6574627b59cSmrg           2     DPMSModeSuspend
6584627b59cSmrg           3     DPMSModeOff
6594627b59cSmrg     1     BOOL            state
6604627b59cSmrg     13                    unused
6614627b59cSmrg</literallayout>
662ea1d6981Smrg</chapter>
663ea1d6981Smrg</book>
664