<?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>BogoJoker &#187; greasemonkey</title>
	<atom:link href="http://blog.bogojoker.com/category/greasemonkey/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.bogojoker.com</link>
	<description>&#039;My humble abode&#039;.sub(/ab/,&#039;c&#039;)</description>
	<lastBuildDate>Mon, 04 Apr 2011 07:33:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>&#8220;Back and Forth&#8221; Greasemonkey For The Whole Web</title>
		<link>http://blog.bogojoker.com/2009/02/back-and-forth-greasemonkey-for-the-whole-web/</link>
		<comments>http://blog.bogojoker.com/2009/02/back-and-forth-greasemonkey-for-the-whole-web/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 15:30:30 +0000</pubDate>
		<dc:creator>Joseph Pecoraro</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[SotD]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[position]]></category>
		<category><![CDATA[shortcut]]></category>
		<category><![CDATA[window.scroll]]></category>

		<guid isPermaLink="false">http://blog.bogojoker.com/?p=480</guid>
		<description><![CDATA[Recently I wrote a Greasemonkey script to add keyboard shortcuts to The Big Picture, to improve on some of their already existing shortcuts. Once I started using some of the shortcuts I made I ended up wanting to use them all over the place at other blogs. This functionality is so tiny, but so useful, [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I wrote a Greasemonkey script to add keyboard shortcuts to The Big Picture, to improve on some of their already existing shortcuts.  Once I started using some of the shortcuts I made I ended up wanting to use them all over the place at other blogs.  This functionality is so tiny, but so useful, that I bundled it into its own script that runs on all web pages!</p>
<p><a href="http://bogojoker.com/greasemonkey/back_and_forth.user.js">Grab it here</a>:</p>
<pre class="textmate-source twilight"><span class="source source_js"><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> ==UserScript==
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @name          Back and Forth
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @namespace     http://blog.bogojoker.com
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @description   Keyboard Shortcut to Jump back and forth on a page. (esc key).
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @include       *
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @version       1.0 - Initial Version - Sunday February 15, 2009
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> ==/UserScript==
</span>
<span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="meta meta_function meta_function_js"><span class="storage storage_type storage_type_function storage_type_function_js">function</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_js">(</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_end punctuation_definition_parameters_end_js">)</span></span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span>

  <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> Global States
</span>  <span class="storage storage_type storage_type_js">var</span> x <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="constant constant_language constant_language_null constant_language_null_js">null</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
  <span class="storage storage_type storage_type_js">var</span> y <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="constant constant_language constant_language_null constant_language_null_js">null</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>

  <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> Add a new Global Key Listener for `esc`
</span>  <span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>addEventListener<span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="string string_quoted string_quoted_double string_quoted_double_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">"</span>keypress<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">"</span></span><span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> <span class="meta meta_function meta_function_js"><span class="storage storage_type storage_type_function storage_type_function_js">function</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_js">(</span><span class="variable variable_parameter variable_parameter_function variable_parameter_function_js">e</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_end punctuation_definition_parameters_end_js">)</span></span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span>
    <span class="keyword keyword_control keyword_control_js">if</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="keyword keyword_operator keyword_operator_js">!</span>e<span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> e<span class="keyword keyword_operator keyword_operator_js">=</span><span class="support support_class support_class_js">window</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_class support_class_js">event</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
    <span class="storage storage_type storage_type_js">var</span> key <span class="keyword keyword_operator keyword_operator_js">=</span> e<span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>keyCode ? e<span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>keyCode : e<span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>which<span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
    <span class="keyword keyword_control keyword_control_js">if</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span> key <span class="keyword keyword_operator keyword_operator_js">==</span> <span class="constant constant_numeric constant_numeric_js">27</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span>
      <span class="storage storage_type storage_type_js">var</span> tempx <span class="keyword keyword_operator keyword_operator_js">=</span> x<span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      <span class="storage storage_type storage_type_js">var</span> tempy <span class="keyword keyword_operator keyword_operator_js">=</span> y<span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      x <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="support support_class support_class_js">Math</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_function support_function_js">max</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">documentElement</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>scrollLeft<span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> <span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">body</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>scrollLeft<span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      y <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="support support_class support_class_js">Math</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_function support_function_js">max</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">documentElement</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>scrollTop<span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> <span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">body</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>scrollTop<span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      <span class="keyword keyword_control keyword_control_js">if</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span> tempx <span class="keyword keyword_operator keyword_operator_js">!=</span> <span class="constant constant_language constant_language_null constant_language_null_js">null</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span> <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> First time it should be null
</span>        <span class="support support_class support_class_js">window</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_function support_function_js">scrollTo</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span>tempx<span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> tempy<span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span>
    <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span>
  <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span><span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> <span class="constant constant_language constant_language_boolean constant_language_boolean_true constant_language_boolean_true_js">true</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>

<span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)()</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
</span></pre>
<p>On any webpage the first time you push the `esc` key position A gets stored.  The next time you push `esc` position B gets stored and the browser jumps to position A.  The next time you push it, A gets stored and you jump to B.  So you always jump back to wherever you pushed `esc` last.  Hence the name &#8220;back and forth.&#8221;</p>
<p>This is useful to me when I jump between comments and the content.  When I&#8217;m reading a comment and I want to check back to the article, I just just push `esc` to save my position, go back to the article, and when I&#8217;m all set I just jump back to my saved position (the comments) with `esc`.</p>
<p>Short, Sweet, Simple: <a href="http://bogojoker.com/greasemonkey/back_and_forth.user.js">The Back and Forth Greasemonkey Script.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bogojoker.com/2009/02/back-and-forth-greasemonkey-for-the-whole-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>More Big Picture Keyboard Functionality!</title>
		<link>http://blog.bogojoker.com/2009/02/more-big-picture-keyboard-functionality/</link>
		<comments>http://blog.bogojoker.com/2009/02/more-big-picture-keyboard-functionality/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 00:03:51 +0000</pubDate>
		<dc:creator>Joseph Pecoraro</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[keyboard]]></category>

		<guid isPermaLink="false">http://blog.bogojoker.com/?p=452</guid>
		<description><![CDATA[I&#8217;ve mentioned before how I&#8217;m a big fan of The Big Picture blog. One of the things that makes it so great is that it has keyboard navigation! You can use &#8216;j&#8217; and &#8216;k&#8217; to automatically jump between pictures. Its so much nicer then scrolling because it jumps to the exact height to maximize the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve mentioned before how I&#8217;m a big fan of <a href="http://www.boston.com/bigpicture/">The Big Picture</a> blog.  One of the things that makes it so great is that it has keyboard navigation!  You can use &#8216;j&#8217; and &#8216;k&#8217; to automatically jump between pictures.  Its so much nicer then scrolling because it jumps to the exact height to maximize the picture in the browser.  Huge usability improvement!</p>
<p>Like before, the problem I had was that users were mentioning pictures in their comments.  Jumping back to that picture was hard or annoying.  So, I wrote a Greasemonkey script that allows you to <em>type in a number</em> and it will automatically jump to that picture!  <a href="http://bogojoker.com/greasemonkey/big_picture_keyboard_commands.user.js">Click here to get the script!</a></p>
<p>Oh, and if you&#8217;re reading comments and you want to jump back and forth between images and comments that works too.  Once you&#8217;ve jumped to the image, just hit &#8216;esc&#8217; and you will be taken back to where you were before.  Too cool!</p>
<pre class="textmate-source twilight"><span class="source source_js"><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> ==UserScript==
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @name          The Big Picture Keyboard Enhancements
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @namespace     http://blog.bogojoker.com
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @description   Keyboard Shortcut Enhancements
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @include       http://www.boston.com/bigpicture/*
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> @version       1.1 - Added Back+Forth - Thursday February 12, 2009
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>                1.0 - Initial Version - Monday February 9, 2009
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>   This allows the user to type in numbers, and after about
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>   a half second it will jump directly to that image.
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>   For example:
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>     Push '1'... '2'... User is taken directly to Image "12"
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>     Push '9'... '9'... User is taken to the last picture.
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>   Use 'esc' to jump back and forth between two positions.
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>   For example if a comment mentions picture 4:
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>     Push '4'...        User is taken directory to Image "4"
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>     Push 'esc'         User is taken back to the comment!
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>     Push 'esc'         User is taken back to Image "4"
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span>
</span><span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> ==/UserScript==
</span>
<span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="meta meta_function meta_function_js"><span class="storage storage_type storage_type_function storage_type_function_js">function</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_js">(</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_end punctuation_definition_parameters_end_js">)</span></span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span>

  <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> GreaseMonkey (Firefox - unsafeWindow) and GreaseKit (Safari - window)
</span>  <span class="storage storage_type storage_type_js">var</span> w <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="string string_regexp string_regexp_js"> <span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">/</span>a<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">/</span></span><span class="meta meta_brace meta_brace_square meta_brace_square_js">[</span><span class="keyword keyword_operator keyword_operator_js">-</span><span class="constant constant_numeric constant_numeric_js">1</span><span class="meta meta_brace meta_brace_square meta_brace_square_js">]</span><span class="keyword keyword_operator keyword_operator_js">==</span><span class="string string_quoted string_quoted_single string_quoted_single_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">'</span>a<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">'</span></span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> ? unsafeWindow : <span class="support support_class support_class_js">window</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>

  <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> Global States
</span>  <span class="storage storage_type storage_type_js">var</span> x<span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> y<span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
  <span class="storage storage_type storage_type_js">var</span> keypressnumber  <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="constant constant_language constant_language_boolean constant_language_boolean_false constant_language_boolean_false_js">false</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
  <span class="storage storage_type storage_type_js">var</span> builtupnumber   <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="string string_quoted string_quoted_single string_quoted_single_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">'</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">'</span></span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
  <span class="storage storage_type storage_type_js">var</span> quicknumtimeout <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="constant constant_language constant_language_null constant_language_null_js">null</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
  <span class="storage storage_type storage_type_js">var</span> imgArr <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>getElementsByClassName<span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="string string_quoted string_quoted_double string_quoted_double_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">"</span>bpImage<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">"</span></span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>

  <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> Keep the old and create a New Global Keypress listener on top of it
</span>  <span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>addEventListener<span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="string string_quoted string_quoted_double string_quoted_double_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">"</span>keypress<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">"</span></span><span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> <span class="meta meta_function meta_function_js"><span class="storage storage_type storage_type_function storage_type_function_js">function</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_js">(</span><span class="variable variable_parameter variable_parameter_function variable_parameter_function_js">e</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_end punctuation_definition_parameters_end_js">)</span></span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span>

    <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> Get the key
</span>    <span class="keyword keyword_control keyword_control_js">if</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="keyword keyword_operator keyword_operator_js">!</span>e<span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> e<span class="keyword keyword_operator keyword_operator_js">=</span><span class="support support_class support_class_js">window</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_class support_class_js">event</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
    <span class="storage storage_type storage_type_js">var</span> key <span class="keyword keyword_operator keyword_operator_js">=</span> e<span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>keyCode ? e<span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>keyCode : e<span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>which<span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>

    <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> Store the current x/y position
</span>    <span class="meta meta_function meta_function_js"><span class="storage storage_type storage_type_function storage_type_function_js">function</span><span class="entity entity_name entity_name_function entity_name_function_js"> storePos</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_js">(</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_end punctuation_definition_parameters_end_js">)</span></span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span>
      x <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="support support_class support_class_js">Math</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_function support_function_js">max</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">documentElement</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>scrollLeft<span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> <span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">body</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>scrollLeft<span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      y <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="support support_class support_class_js">Math</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_function support_function_js">max</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">documentElement</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>scrollTop<span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> <span class="support support_class support_class_js">document</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">body</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>scrollTop<span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
    <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span>

    <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> # Character =&gt; Jump to that image, Store Position
</span>    <span class="keyword keyword_control keyword_control_js">if</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span> key <span class="keyword keyword_operator keyword_operator_js">&gt;=</span> <span class="constant constant_numeric constant_numeric_js">48</span> <span class="keyword keyword_operator keyword_operator_js">&amp;&amp;</span> key <span class="keyword keyword_operator keyword_operator_js">&lt;=</span> <span class="constant constant_numeric constant_numeric_js">57</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span>
      <span class="keyword keyword_control keyword_control_js">if</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span> e<span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">target</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_dom support_constant_dom_js">nodeName</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_function support_function_js">match</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="string string_regexp string_regexp_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">/</span>TEXTAREA|INPUT<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">/</span></span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> <span class="keyword keyword_control keyword_control_js">return</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      <span class="support support_function support_function_js">clearTimeout</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span>quicknumtimeout<span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      keypressnumber <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="constant constant_language constant_language_boolean constant_language_boolean_true constant_language_boolean_true_js">true</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      builtupnumber <span class="keyword keyword_operator keyword_operator_js">+=</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span>key <span class="keyword keyword_operator keyword_operator_js">-</span> <span class="constant constant_numeric constant_numeric_js">0x30</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      quicknumtimeout <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="support support_function support_function_js">setTimeout</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="meta meta_function meta_function_js"><span class="storage storage_type storage_type_function storage_type_function_js">function</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_js">(</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_end punctuation_definition_parameters_end_js">)</span></span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span>
        w<span class="meta meta_brace meta_brace_square meta_brace_square_js">[</span><span class="string string_quoted string_quoted_single string_quoted_single_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">'</span>currImg<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">'</span></span><span class="meta meta_brace meta_brace_square meta_brace_square_js">]</span> <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="support support_function support_function_js">parseInt</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span>builtupnumber<span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span><span class="constant constant_numeric constant_numeric_js">10</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="keyword keyword_operator keyword_operator_js">-</span><span class="constant constant_numeric constant_numeric_js">1</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
        <span class="keyword keyword_control keyword_control_js">if</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span>w<span class="meta meta_brace meta_brace_square meta_brace_square_js">[</span><span class="string string_quoted string_quoted_single string_quoted_single_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">'</span>currImg<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">'</span></span><span class="meta meta_brace meta_brace_square meta_brace_square_js">]</span> <span class="keyword keyword_operator keyword_operator_js">&gt;=</span> imgArr<span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_js">length</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span> w<span class="meta meta_brace meta_brace_square meta_brace_square_js">[</span><span class="string string_quoted string_quoted_single string_quoted_single_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">'</span>currImg<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">'</span></span><span class="meta meta_brace meta_brace_square meta_brace_square_js">]</span> <span class="keyword keyword_operator keyword_operator_js">=</span> imgArr<span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_constant support_constant_js">length</span><span class="keyword keyword_operator keyword_operator_js">-</span><span class="constant constant_numeric constant_numeric_js">1</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span>
        storePos<span class="meta meta_brace meta_brace_round meta_brace_round_js">()</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
        <span class="support support_class support_class_js">window</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_function support_function_js">scrollTo</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span><span class="constant constant_numeric constant_numeric_js">0</span><span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span>imgArr<span class="meta meta_brace meta_brace_square meta_brace_square_js">[</span> w<span class="meta meta_brace meta_brace_square meta_brace_square_js">[</span><span class="string string_quoted string_quoted_single string_quoted_single_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">'</span>currImg<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">'</span></span><span class="meta meta_brace meta_brace_square meta_brace_square_js">]</span> <span class="meta meta_brace meta_brace_square meta_brace_square_js">]</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span>offsetTop<span class="keyword keyword_operator keyword_operator_js">+</span><span class="constant constant_numeric constant_numeric_js">174</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
        keypressnumber <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="constant constant_language constant_language_boolean constant_language_boolean_false constant_language_boolean_false_js">false</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
        builtupnumber <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="string string_quoted string_quoted_single string_quoted_single_js"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js">'</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js">'</span></span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
        quicknumtimeout <span class="keyword keyword_operator keyword_operator_js">=</span> <span class="constant constant_language constant_language_null constant_language_null_js">null</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span><span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> <span class="constant constant_numeric constant_numeric_js">300</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
    <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span>

    <span class="comment comment_line comment_line_double-slash comment_line_double-slash_js"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js">//</span> Esc =&gt; Jump back to a Saved Position
</span>    <span class="keyword keyword_control keyword_control_js">if</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span> key <span class="keyword keyword_operator keyword_operator_js">==</span> <span class="constant constant_numeric constant_numeric_js">27</span> <span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span> <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">{</span>
      <span class="storage storage_type storage_type_js">var</span> tempx <span class="keyword keyword_operator keyword_operator_js">=</span> x<span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span> <span class="storage storage_type storage_type_js">var</span> tempy <span class="keyword keyword_operator keyword_operator_js">=</span> y<span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span> storePos<span class="meta meta_brace meta_brace_round meta_brace_round_js">()</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
      <span class="support support_class support_class_js">window</span><span class="meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js">.</span><span class="support support_function support_function_js">scrollTo</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">(</span>tempx<span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> tempy<span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
    <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span>   

  <span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span><span class="meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js">,</span> <span class="constant constant_language constant_language_boolean constant_language_boolean_true constant_language_boolean_true_js">true</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>

<span class="meta meta_brace meta_brace_curly meta_brace_curly_js">}</span><span class="meta meta_brace meta_brace_round meta_brace_round_js">)()</span><span class="punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js">;</span>
</span></pre>
<p>All I do is register a new global keyboard listener to catch numeric keys and act accordingly.  I tested thoroughly on Firefox and Safari to make sure it works correctly in all cases.  It jumps to the correct image, it maintains the &#8220;current image&#8221; so j/k will still work, it won&#8217;t jump if you&#8217;re typing in a textfield/input, etc.  It even properly handles situations that the current j/k functionality doesn&#8217;t.  For instance mine allows the user to type in the comment box, click outside the box and reuse the keyboard shortcuts.  When you type a j/k or even click inside the search box at the top the j/k functionality is gone.  I didn&#8217;t feel like correcting that in this Greasemonkey script in case it gets fixed by the developers behind the Big Picture. (Note to those developers: reset isLoaded back to true or take a different approach.)</p>
<p>I&#8217;m open to New Ideas.  I have some myself but I have to focus on schoolwork in these next few weeks.  Let me know if you want anything.</p>
<p><a href="http://bogojoker.com/greasemonkey/big_picture_keyboard_commands.user.js">Big Picture Keyboard Commands Greasemonkey Script!</a></p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bogojoker.com/2009/02/more-big-picture-keyboard-functionality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stack Overflow &#8211; Edit Summary Quicklinks</title>
		<link>http://blog.bogojoker.com/2008/09/stack-overflow-edit-summary-quicklinks/</link>
		<comments>http://blog.bogojoker.com/2008/09/stack-overflow-edit-summary-quicklinks/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 02:11:01 +0000</pubDate>
		<dc:creator>Joseph Pecoraro</dc:creator>
				<category><![CDATA[free]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Stack Overflow]]></category>

		<guid isPermaLink="false">http://blog.bogojoker.com/?p=80</guid>
		<description><![CDATA[I requested a feature to make the few edit summary suggestions clickable. I, like many developers, don&#8217;t normally let my keys leave the keyboard. However, this was one case where I felt making those suggestions of &#8220;corrected spelling&#8221; and &#8220;fixed grammar&#8221; should automatically be inserted. Well the suggestion was declined. I can&#8217;t blame the team. [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://stackoverflow.uservoice.com/pages/general/suggestions/21044">requested a feature</a> to make the few edit summary suggestions clickable.  I, like many developers, don&#8217;t normally let my keys leave the keyboard.  However, this was one case where I felt making those suggestions of &#8220;corrected spelling&#8221; and &#8220;fixed grammar&#8221; should automatically be inserted.</p>
<p><img style="display: block; margin: 25px 40px; border: 1px solid lightGray" src="http://blog.bogojoker.com/wp-content/uploads/2008/09/edit_summary.png" alt="Showing the Usage" title="Stack Overflow Edit Summary" width="500" height="165" class="size-full wp-image-82" /></p>
<p>Well the suggestion was declined.  I can&#8217;t blame the team.  Nobody upvoted the suggestion.  But I felt strongly enough about it, and knew that it was very simple to implement that I whipped up a GreaseMonkey script to do it myself.  The script runs like a charm and even adds a few extra suggestions to the original three.  It handles formatting and commas all automatically, so don&#8217;t worry about a thing, just click.  Enjoy!</p>
<p><a href="http://bogojoker.com/greasemonkey/so_edit_summary_quicklinks.user.js">Script to Add Edit Summary Quicklinks</a></p>
<p><a href="http://bogojoker.com/greasemonkey/so_prevent_blank_edit_summary.user.js">Script to Prevent Blank Edit Summaries</a></p>
<p><strong>UPDATE:</strong> Fixed to use keng&#8217;s URL and added just plain old stackoverflow.com without the beta sub-domain in preparation for a launch.  Thanks keng!</p>
<p><strong>DOUBLE UPDATE:</strong> Sam put out a &#8220;wanted ad&#8221; for a Greasemonkey script to prevent blank edit summaries.  I whipped that script up and linked to it up above.  Thanks Sam!  <a href="http://screencast.com/t/HkGq0bvf">Quick Demo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bogojoker.com/2008/09/stack-overflow-edit-summary-quicklinks/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

