AWS shortcut keys

AWS navigation shortcut keys

// ==UserScript==
// @name     AWS shortcut keys
// @description AWS navigation shortcut keys
// @include  http*://*aws.amazon.com/*
// @version  1.02
// @grant    none
// @namespace https://greasyfork.org/users/304483
// ==/UserScript==

// Based on this example:
// https://greasyfork.org/en/scripts/2656-facebook-logout-shortcut-just-press-alt-l/code

var eventUtility = {
    addEvent : function(el, type, fn) {
        if (typeof addEventListener !== "undefined") {
            el.addEventListener(type, fn, false);
        } else if (typeof attachEvent !== "undefined") {
            el.attachEvent("on" + type, fn);
        } else {
            el["on" + type] = fn;
        }
    }
};

function ascii (a) { return a.charCodeAt(0); }

function getClassElementWithTitle(classname, title)
{
  // assess parent frame/document
  {
    var items = document.getElementsByClassName(classname);

    for (i = 0; i < items.length; i++)
    {
      if (items[i].title == title)
        return items[i];
    }
  }
  
  // assess *all* iframes
  for (k = 0; k < window.frames.length; k++)
  {
    var items = window.frames[k].document.getElementsByClassName(classname);

    for (i = 0; i < items.length; i++)
    {
      if (items[i].title == title)
        return items[i];
    }
  }
  return null;  
}

function checkForShortcutKeys(evt)
{
  var code = evt.keyCode,
      altKey = evt.altKey;
  shiftKey = evt.shiftKey;

  // ALT + / = Go to search box
  if (altKey && code === 191)
  {
    var searchfield = document.getElementById("search-box-input");
    searchfield.focus()
    searchfield.select()
  }

  // ALT + R = Click 'refresh' button/link in page
  if (altKey && code === ascii('R'))
  {
    var refreshBtn = getClassElementWithTitle('gwt-Image', 'Refresh');
    if (refreshBtn)
      refreshBtn.click();
  }    
  
  // ALT + S = 'Services' menu
  if (altKey && code === ascii('S'))
  {
    var services = document.getElementById("nav-servicesMenu");
    services.click();
    evt.preventDefault();
  }
}


(function() {
  
  // BASE FRAME EVENT HANDLER
  // ========================
	eventUtility.addEvent(document, "keydown",
		function(evt) {
      checkForShortcutKeys(evt);
		});
  
  // IFRAME EVENT HANDLER
  // ====================
  for (k = 0; k < window.frames.length; k++)
  {
    eventUtility.addEvent(window.frames[k].document, "keydown",
      function(evt) {
        checkForShortcutKeys(evt);
      });
  }
}());