<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dev.enekoalonso.com &#187; shortcut</title>
	<atom:link href="http://dev.enekoalonso.com/tag/shortcut/feed/" rel="self" type="application/rss+xml" />
	<link>http://dev.enekoalonso.com</link>
	<description>having fun with code</description>
	<lastBuildDate>Wed, 12 Oct 2011 21:40:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Keyboard shortcuts in Drupal: Navigating through comments</title>
		<link>http://dev.enekoalonso.com/2008/12/14/keyboard-shortcuts-in-drupal-navigating-through-comments/</link>
		<comments>http://dev.enekoalonso.com/2008/12/14/keyboard-shortcuts-in-drupal-navigating-through-comments/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 17:44:19 +0000</pubDate>
		<dc:creator>Eneko Alonso</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[keydown]]></category>
		<category><![CDATA[keyup]]></category>
		<category><![CDATA[shortcut]]></category>

		<guid isPermaLink="false">http://dev.enekoalonso.com/?p=148</guid>
		<description><![CDATA[It was one of the best features of Google Reader and Google GMail: the keyboard shortcuts, specially the ones to navigate through messages or posts (n = next, p = previous). I decided it was time to implement it on spaniards.es, so here is the code I used. So far it only navigates through comments [...]]]></description>
			<content:encoded><![CDATA[<p>It was one of the best features of Google Reader and Google GMail: the keyboard shortcuts, specially the ones to navigate through messages or posts (n = next, p = previous).</p>
<p>I decided it was time to implement it on <a href="http://www.spaniards.es">spaniards.es</a>, so here is the code I used. So far it only navigates through comments back and forth on the same page (does not go to next page or so). I am planning to add other shortcuts soon.</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">keyup</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>event<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>event.<span class="me1">target</span>.<span class="me1">tagName</span> == <span class="st0">&quot;INPUT&quot;</span> <span class="sy0">||</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; event.<span class="me1">target</span>.<span class="me1">tagName</span> == <span class="st0">&quot;TEXTAREA&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">var</span> selected = $<span class="br0">&#40;</span><span class="st0">&#39;.comment-selected&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// Next comment</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>event.<span class="me1">keyCode</span> == <span class="nu0">78</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>selected.<span class="me1">length</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; selected.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">&#39;comment-selected&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; selected = selected.<span class="me1">nextAll</span><span class="br0">&#40;</span><span class="st0">&#39;.comment:first&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; selected.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">&#39;comment-selected&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; selected = $<span class="br0">&#40;</span><span class="st0">&#39;.comment:first&#39;</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">&#39;comment-selected&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>selected.<span class="me1">length</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; window.<span class="me1">scrollTo</span><span class="br0">&#40;</span><span class="nu0">0</span>, selected.<span class="me1">offset</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">top</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// Previous comment</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>event.<span class="me1">keyCode</span> == <span class="nu0">80</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>selected.<span class="me1">length</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; selected.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">&#39;comment-selected&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; selected = selected.<span class="me1">prevAll</span><span class="br0">&#40;</span><span class="st0">&#39;.comment:first&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; selected.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">&#39;comment-selected&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; selected = $<span class="br0">&#40;</span><span class="st0">&#39;.comment:last&#39;</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">&#39;comment-selected&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>selected.<span class="me1">length</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; window.<span class="me1">scrollTo</span><span class="br0">&#40;</span><span class="nu0">0</span>, selected.<span class="me1">offset</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">top</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>As you can see, it is important to leave the input and textarea fields alone, so the keyboard shortcuts don&#8217;t interfere with the user typing some text. With a little bit of CSS the selected comment can be displayed with a different border color or background. And that&#8217;s it!</p>
<p>Check an example topic at <a href="http://www.spaniards.es/foros/2008/12/12/empresas-alemanas-que-trabajen-ingles">www.spaniards.es</a></p>
<h3  class="related_post_title">Related Posts:</h3><ul class="related_post"><li>December 13, 2008 -- <a href="http://dev.enekoalonso.com/2008/12/13/ajax-comments-in-drupal-5-how-i-made-it-part-iii/" title="Ajax comments in Drupal 5: How I made it &#8211; Part III">Ajax comments in Drupal 5: How I made it &#8211; Part III</a> (10)</li><li>December 11, 2008 -- <a href="http://dev.enekoalonso.com/2008/12/11/ajax-comments-in-drupal-5-how-i-made-it-part-ii/" title="Ajax comments in Drupal 5: How I made it &#8211; Part II">Ajax comments in Drupal 5: How I made it &#8211; Part II</a> (0)</li><li>December 10, 2008 -- <a href="http://dev.enekoalonso.com/2008/12/10/ajax-comments-in-drupal-5-how-i-made-it-part-i/" title="Ajax comments in Drupal 5: How I made it &#8211; Part I">Ajax comments in Drupal 5: How I made it &#8211; Part I</a> (10)</li><li>February 24, 2009 -- <a href="http://dev.enekoalonso.com/2009/02/24/vancode2int/" title="vancode2int">vancode2int</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://dev.enekoalonso.com/2008/12/14/keyboard-shortcuts-in-drupal-navigating-through-comments/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

