<html><body>
<p>That's a good point about needing to call stopEvent for keydown sometimes, and keypress others.  It is complicated.<br>
FWIW, dijit/form/_TextBoxMixin.js tries to normalize the events:<br>
&quot;onkeydown&quot;, &quot;onkeypress&quot;, &quot;onpaste&quot;, &quot;oncut&quot;, &quot;oninput&quot;<br>
and calls onInput(e) to give that method the chance to kill the event.  It basically assumes that printable characters<br>
can use keypress and others can use keydown to stop the event.  It throws in cut/paste/input events in an attempt<br>
for user-action completeness.  The goal is that widgets that inherit from TextBox have a standard way of dealing with keys.<br>
<br>
Doug<br>
<br>
<img width="16" height="16" src="cid:1__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt="Inactive hide details for Ben Lowery ---03/16/2011 09:38:16 AM---&gt; &gt; - keypress handling - this is moved out to dojo/_base/keyp"><font color="#424282">Ben Lowery ---03/16/2011 09:38:16 AM---&gt; &gt; - keypress handling - this is moved out to dojo/_base/keypress.js as a</font><br>
<br>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">From:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2">Ben Lowery &lt;blowery@dojotoolkit.org&gt;</font></td></tr>

<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">To:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2">&quot;dojo dev.&quot; &lt;dojo-contributors@mail.dojotoolkit.org&gt;</font></td></tr>

<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">Date:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2">03/16/2011 09:38 AM</font></td></tr>

<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">Subject:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2">Re: [dojo-contributors] Event handling proposal</font></td></tr>

<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">Sent by:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C6DFD8B8678f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2">dojo-contributors-bounces@mail.dojotoolkit.org</font></td></tr>
</table>
<hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br>
<br>

<ul><tt>- keypress handling - this is moved out to dojo/_base/keypress.js as a<br>
custom extension/emulation event.</tt></ul>

<ul><br>
<font size="4">Didn't quite follow the code in keypress.js, I know for IE you need to generate faux keypress events for non-printable characters (otherwise you just get a keydown event), but it looks like you are listening for keypress events in order to generate keypress events:</font><br>
<br>
<font size="4" color="#102BC3">return</font><font size="4"> listen</font><font size="4" color="#6F6F6F">(</font><font size="4">object</font><font size="4" color="#6F6F6F">,</font><font size="4"> </font><font size="4" color="#006C1D">&quot;keypress&quot;</font><font size="4" color="#6F6F6F">,</font><font size="4"> </font><font size="4" color="#102BC3">function</font><font size="4" color="#6F6F6F">(</font><font size="4">evt</font><font size="4" color="#6F6F6F">){</font><br>
<font size="4">...</font><br>
<font size="4" color="#008F29">// simulate a </font><u><font size="4" color="#008F29">keypress</font></u><font size="4" color="#008F29"> event</font><br>
<font size="4" color="#102BC3">var</font><font size="4"> faux </font><font size="4" color="#6F6F6F">=</font><font size="4"> _synthesizeEvent</font><font size="4" color="#6F6F6F">(</font><font size="4">evt</font><font size="4" color="#6F6F6F">,</font><font size="4"> </font><font size="4" color="#6F6F6F">{</font><font size="4">type</font><font size="4" color="#6F6F6F">:</font><font size="4"> </font><font size="4" color="#006C1D">'keypress'</font><font size="4" color="#6F6F6F">,</font><font size="4"> faux</font><font size="4" color="#6F6F6F">:</font><font size="4"> </font><font size="4" color="#95154F">true</font><font size="4" color="#6F6F6F">,</font><font size="4"> charCode</font><font size="4" color="#6F6F6F">:</font><font size="4"> c</font><font size="4" color="#6F6F6F">});</font></ul>
<br>
<br>
<font size="4">We might want to take this opportunity fix our key handling. I did some poking around a bit ago, and wrote up my findings for script junkie[1]. I think our approach of trying to rationalize key events on to the mozilla model isn't a good way to go, it leads to too many surprises, especially when you're trying to do something low level. A better approach would be to expose a separate key handling abstraction, probably comparable to how closure does it [2].</font><br>
<br>
<font size="4">You really don't want to try to normalize onto either the IE/Webkit or the Mozilla model. They differ on how they deal with preventing default behavior, how repeats are handled, and a bunch of other little things. Also, neither is backed by a standard (there is NO worthwhile standard on how key events behave, unless you go to DOM3, and no one has bothered to implement that in a serious manner yet).</font><br>
<br>
<font size="4">[1] </font><a href="http://msdn.microsoft.com/en-us/scriptjunkie/ff928319"><u><font size="4" color="#0000FF">http://msdn.microsoft.com/en-us/scriptjunkie/ff928319</font></u></a><br>
<font size="4">[2] </font><a href="http://closure-library.googlecode.com/svn/docs/class_goog_events_KeyHandler.html"><u><font size="4" color="#0000FF">http://closure-library.googlecode.com/svn/docs/class_goog_events_KeyHandler.html</font></u></a><tt>_______________________________________________<br>
dojo-contributors mailing list<br>
dojo-contributors@mail.dojotoolkit.org<br>
</tt><tt><a href="http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors">http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors</a></tt><tt><br>
</tt><br>
<br>
</body></html>