Mouse Lock: Work in progress on initial spec conversion
authorVincent Scheib <scheib@google.com>
Mon, 24 Oct 2011 14:11:34 -0700
changeset 132 4ec3f28f3e93
parent 129 db182626a41b
child 133 d6110048bf5c
Mouse Lock: Work in progress on initial spec conversion
mouse-lock.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mouse-lock.html	Mon Oct 24 14:11:34 2011 -0700
@@ -0,0 +1,194 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <title>Mouse Lock</title>
+    <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>
+    <meta name="viewport" content="width=device-width">
+    <!--
+      === NOTA BENE ===
+      For the three scripts below, if your spec resides on dev.w3 you can check them
+      out in the same tree and use relative links so that they'll work offline,
+     -->
+    <script src='http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js' class='remove'></script>
+    <script class='remove'>
+      var respecConfig = {
+        // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
+        specStatus:           "ED",
+
+        // the specification's short name, as in http://www.w3.org/TR/short-name/
+        shortName:            "mouse-lock",
+
+        // if your specification has a subtitle that goes below the main
+        // formal title, define it here
+        // subtitle   :  "an excellent document",
+
+        // if you wish the publication date to be other than today, set this
+        //publishDate:  "2011-01-01",
+
+        // if the specification's copyright date is a range of years, specify
+        // the start date here:
+        // copyrightStart: "2005"
+
+        // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
+        // and its maturity status
+        // previousPublishDate:  "1977-03-15",
+        // previousMaturity:  "WD",
+
+        // if there a publicly available Editor's Draft, this is the link
+        edDraftURI:           "http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html",
+
+        // if this is a LCWD, uncomment and set the end of its review period
+        // lcEnd: "2009-08-05",
+
+        // if you want to have extra CSS, append them to this list
+        // it is recommended that the respec.css stylesheet be kept
+        extraCSS:             ["http://www.w3.org/StyleSheets/TR/W3C-TR.css", "http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css"],
+
+        // editors, add as many as you like
+        // only "name" is required
+        editors:  [
+            { name: "Vincent Scheib", url: "http://www.scheib.net",
+        company: "Google", companyURL: "http://www.google.com/" },
+        ],
+
+        // authors, add as many as you like.
+        // This is optional, uncomment if you have authors as well as editors.
+        // only "name" is required. Same format as editors.
+
+        //authors:  [
+        //    { name: "Your Name", url: "http://example.org/",
+        //      company: "Your Company", companyURL: "http://example.com/" },
+        //],
+
+        // name of the WG
+        wg:           "Web Events Working Group",
+
+        // URI of the public WG page
+        wgURI:        "http://www.w3.org/2010/webevents/",
+
+        // name (with the @w3c.org) of the public mailing to which comments are due
+        wgPublicList: "public-webevents",
+
+        // URI of the patent status for this WG, for Rec-track documents
+        // !!!! IMPORTANT !!!!
+        // This is important for Rec-track documents, do not copy a patent URI from a random
+        // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
+        // Team Contact.
+        wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/45559/status",
+      };
+    </script>
+
+    <style type="text/css">
+      .event {
+        font-family: monospace;
+        color: #459900;
+      }
+
+      pre.idl {
+        white-space: pre-wrap;
+      }
+    </style>
+  </head>
+  <body>
+    <section id='abstract'>
+      This specification defines an API that provides scripted access to raw
+      mouse movement data while locking the target of mouse events to a single
+      element and removing the cursor from view.  This is an essential input
+      mode for certain classes of applications, especially first person
+      perspective 3D applications and 3D modelling software.
+    </section>
+
+    <section id='introduction' class='informative'>
+
+      <h2>Introduction</h2>
+
+      <p>The Mouse Lock API provides for input methods of applications based on 
+      the movement of the mouse, not just the absolute position of a cursor.  A 
+      popular example is that of first person movement controls in three 
+      dimensional graphics applications such as games.  Movement of the mouse is 
+      interpreted for rotation of the view-port, there is no limit to how far 
+      movement can go, and no mouse cursor is displayed.</p>
+      
+      <p>Mouse Lock is related to Mouse Capture [MDCCAP].  Capture provides 
+      continued event delivery to a target element while a mouse is being 
+      dragged, but ceases when the mouse button is released.  Mouse Lock differs 
+      by being persistent, not limited by screen boundaries, sending events 
+      regardless of mouse button state, hiding the cursor, and not releasing 
+      until an API call or specific release gesture by the user.</p> 
+
+    </section>
+
+    <section id='conformance'>
+      <p>
+        This specification defines conformance criteria that apply to a single
+        product: the <dfn id="dfn-user-agent">user agent</dfn> that implements
+        the interfaces that it contains.
+      </p>
+
+      <p>
+        Implementations that use ECMAScript to implement the APIs defined in
+        this specification MUST implement them in a manner consistent with the
+        ECMAScript Bindings defined in the Web IDL specification [[!WEBIDL]] as
+        this specification uses that specification and terminology.
+      </p>
+
+      <p>
+        A conforming implementation is required to implement all fields
+        defined in this specification.
+      </p>
+    </section>
+
+    <section>
+      <h2><a>Document</a> Interface extension</h2>
+      <p>
+        The <a>Document</a> interface [[!DOM-LEVEL-3-CORE]] contains methods
+        providing the ability to enter, exit, and poll the state of mouse lock.
+      </p>
+
+      <dl title='partial interface Document' class='idl'>
+        <dt>void lockMouse()</dt>
+        <dd>
+          The <a>lockMouse</a>() method requests that the mouse be locked to a 
+          given DOM element <a>target</a>. It must immediately return. Two 
+          optional callback parameters provide asynchronous notification of 
+          success <a>successCallback</a> or failure <a>failureCallback</a> to 
+          acquire the locked state. The user agent must determine if mouse lock 
+          state will be entered and call the appropriate callback if it was 
+          provided. Because a user agent may prompt a user for permission to 
+          enter mouse lock the response must be asynchronous.
+          <dl class='parameters'>
+            <dt>in Element target</dt> <dd></dd>
+            <dt>in optional VoidCallback successCallback</dt> <dd></dd>
+            <dt>in optional VoidCallback failureCallback</dt> <dd></dd>
+          </dl>
+        </dd>
+      </dl>
+    </section>
+
+
+
+    <section class='appendix informative'>
+      <h2>Acknowledgements</h2>
+
+      <p>Many have made contributions to the discussions of this
+        specification:</p>
+
+      <ul>
+        <li>Adam Barth</li>
+        <li>Alexey Proskuryakov</li>
+        <li>Aryeh Gregor</li>
+        <li>Brandon Andrews</li>
+        <li>Glenn Maynard</li>
+        <li>Gregg Tavares</li>
+        <li>John Villar</li>
+        <li>Jonas Sicking</li>
+        <li>Klaas Heidstra</li>
+        <li>Olli Pettay</li>
+        <li>Robert O'Callahan</li>
+        <li>Tab Atkins Jr.</li>
+      </ul>
+
+      <p>Please let me know if I have inadvertently omitted your name.</p>
+    </section>
+  </body>
+</html>