<div class="gmail_quote">2010/9/12 Dave Zarzycki <span dir="ltr">&lt;<a href="mailto:zarzycki@apple.com" target="_blank">zarzycki@apple.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word"><div><div><div>On Sep 8, 2010, at 8:42 PM, cee1 wrote:</div></div></div><div><div><blockquote type="cite"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>2. We have custom source of type DISPATCH_SOURCE_TYPE_DATA_ADD and DISPATCH_SOURCE_TYPE_DATA_OR, and can use dispatch_source_merge_data</div>





<div>to fire custom sources. Why we don&#39;t have an &#39;is_level&#39; source?</div></blockquote></blockquote></div></div><div><div><blockquote type="cite"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">

<div>An &quot;is_level&quot; source may not make much sense, but can be attached with cancel handler, this may be useful in some cases.</div></blockquote></blockquote><div><br></div></div><div>If you can think of a practical use for that, then let us know.</div>

<div><br></div></div></div></blockquote><div>I find a case, it&#39;s about adding T9 physical keyboard support on Android. </div><div>We found some input methods already support T9 virtual keyboard but not physical one. So we handle onKeyDown event, translating a physical key press to a touch event on the virtual keyboard, e.g:</div>

<div>key &#39;2&#39; -&gt; touchEvent (10, 20)  --  (10, 20) is (x,y) in screen coordinates.</div><div><br></div><div>Unfortunately synthesizing and sending a touch event will spend some time, causing android prompts not responsible of this program. So synthesizing and sending a touch event should be delayed to another thread. This time, &#39;is_level&#39; custom source will be useful:</div>

<div><br></div></div>ds = dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA_LEVEL, ...);<div>dispatch_source_set_event_handler_f(ds, synthesize_and_send_touch_event);</div><div><br></div><div>onKeyDown() {</div><div>    dispatch_source_merge_data(ds, KEY_2);</div>
<div>}<br><div><br><div><br><div><br><div><br>-- <br>Regards,<div><br><div>- cee1</div></div><br>
</div></div></div></div></div>