HWM_use_kb

HWM add hotkeys for navigation

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name:en        HWM_use_kb
// @name           HWM_use_kb
// @author         kaifonaft, original by LazyGreg
// @namespace      https://greasyfork.org
// @description    HWM добавляет горячие клавиши для навигации
// @description:en HWM add hotkeys for navigation
// @version        0.42
//
// @include       https://www.heroeswm.ru/*

// @exclude       https://www.heroeswm.ru/auction_lot_protocol.php*
// @exclude       https://www.heroeswm.ru/war.php*
// @exclude       https://www.heroeswm.ru/warlog.php*
// @exclude       https://www.heroeswm.ru/sms.php*
// @exclude       https://www.heroeswm.ru/auction.php*
//
// ==/UserScript==

// ========================================================
//
// ==================== User's Hotkeys ====================================
// numeric buttons above letter keys... and also with NumLock on.
// array, 0-number on key, 1-url

var my_hotkeys = [];
my_hotkeys.push([0,'https://www.heroeswm.ru/home.php']);  // "0" key
my_hotkeys.push([1,'https://www.heroeswm.ru/inventory.php?all_on=1']);  // "1" key
my_hotkeys.push([2,'https://www.heroeswm.ru/inventory.php?all_on=2']);  // "2" key
my_hotkeys.push([3,'https://www.heroeswm.ru/inventory.php?all_on=3']);  // "3" key
my_hotkeys.push([4,'https://www.heroeswm.ru/inventory.php?all_on=4']);  // "4" key
my_hotkeys.push([5,'https://www.heroeswm.ru/inventory.php?all_on=5']);  // "5" key
my_hotkeys.push([6,'https://www.heroeswm.ru/home.php']);  // "6" key
my_hotkeys.push([7,'https://www.heroeswm.ru/home.php']);  // "7" key
my_hotkeys.push([8,'https://www.heroeswm.ru/home.php']);  // "8" key
my_hotkeys.push([9,'https://www.heroeswm.ru/home.php']);  // "9" key

// ========================================================================
//
//
// ============
var player_id = getPlayerId();

function getPlayerId(){
	return get_cookie('pl_id');
}
function get_cookie ( cookie_name ){
	var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );

	if ( results )
		return ( unescape ( results[2] ) );
	else
		return null;
}

// ========================== Standard Addresses ==============================
// array, 0-eng, 1-rus, 2-url
var std_hotkeys = [];
std_hotkeys.push([72,72,'https://www.heroeswm.ru/home.php']);  // "H" for home
std_hotkeys.push([71,71,'https://www.heroeswm.ru/mercenary_guild.php']); // "G" for GN
std_hotkeys.push([69,69,'https://www.heroeswm.ru/sms.php']); // "E" for Mail
std_hotkeys.push([65,65,'https://www.heroeswm.ru/auction.php']); // "A" for Market/Auction 
std_hotkeys.push([77,77,'https://www.heroeswm.ru/map.php']); // "M" for Map
std_hotkeys.push([112,112,'https://www.heroeswm.ru/pl_info.php?id='+player_id]); // "P" or F1 for Profile
std_hotkeys.push([80,80,'https://www.heroeswm.ru/pl_info.php?id='+player_id]); // "P" or F1 for Profile
std_hotkeys.push([66,66,'https://www.heroeswm.ru/group_wars.php']); // "B" for Battles (group)
std_hotkeys.push([86,86,'https://www.heroeswm.ru/group_wars.php?filter=hunt']); // "V" for Hunt 

std_hotkeys.push([70,70,'https://www.heroeswm.ru/forum.php']); // "F" for Forum 
std_hotkeys.push([84,84,'https://www.heroeswm.ru/transfer.php']); // "T" for Transfer 
std_hotkeys.push([67,67,'https://www.heroeswm.ru/castle.php']); // "C" for Castle 
std_hotkeys.push([73,73,'https://www.heroeswm.ru/inventory.php']); // "I" for Inventory 
std_hotkeys.push([83,83,'https://www.heroeswm.ru/shop.php']); // "S" for Shop 

std_hotkeys.push([75,75,'https://www.heroeswm.ru/skillwheel.php']); // "K" for SkillWheel 
std_hotkeys.push([87,87,'https://www.heroeswm.ru/mod_workbench.php']); // "W" for WorkShop
std_hotkeys.push([76,76,'https://www.heroeswm.ru/pl_warlog.php?id='+player_id]); // "L" for Your Battle Log
std_hotkeys.push([79,79,'https://www.heroeswm.ru/pl_transfers.php?id='+player_id]); // "O" for Your Transfers Log
std_hotkeys.push([82,82,'https://www.heroeswm.ru/army.php']); // "R" for Recruiting (army)

std_hotkeys.push([68,68,'https://www.heroeswm.ru/inventory.php?all_on=1']); // "D" for Dress (arts on)
std_hotkeys.push([85,85,'https://www.heroeswm.ru/inventory.php?all_off=1']); // "U" for Un-Dress (arts off)


// ============================================================================
//
//
//
var url_cur = location.href ;

document.addEventListener( "keydown", handleKeyDown , false );
document.addEventListener( "keyup", handleKeyUp , false );

var isCtrl = false;
function handleKeyDown(e){
	if(e.which == 17) isCtrl=true;
}

function handleKeyUp(e){
    var evt = (e) ? e : window.event;   
	var c = (evt.charCode) ? evt.charCode : evt.keyCode;
	if(e.which == 17) isCtrl=false;
  
	var nodeName = e.target.nodeName;
	var inputs = ["INPUT", "TEXTAREA", "SELECT"]
	if(inputs.indexOf(nodeName) != -1)
		return;

    var evt = (e) ? e : window.event;       //IE reports window.event not arg
	var c = (evt.charCode) ? evt.charCode : evt.keyCode;
	
 	handleChar(c);
}

function handleChar(c) {
	if (c <= 46 || isCtrl) { return; }		 // special keys  (shift is 16 btw)
	//
	// check standard keys
	for(var i=0; i<std_hotkeys.length; i++){
		if(c==std_hotkeys[i][0] || c==std_hotkeys[i][1]){
			window.location = std_hotkeys[i][2];
		}
	}

    // check user's keys
	for(i=0; i<my_hotkeys.length; i++){
		if(c==my_hotkeys[i][0]+48 ){
			window.location = my_hotkeys[i][1];
		}
	}
}

// === show note :-)
var helpDiv = document.createElement('div');
helpDiv.className = 'js-kb-help';
helpDiv.setAttribute('style', '\
  position: relative; left:36px; top: -13px; z-index: 1;\
  display: none; width: 200px; background: #eee9cd;\
  box-shadow: 1px 1px 4px #222222; padding: 2px;\
');
var strs = [
	' "H" for home',
	' "G" for GN',
	' "E" for Mail',
	' "A" for Market/Auction ',
	' "M" for Map',
	' "P", F1 for Profile',
	' "B" for Battles (group)',
	' "V" for Hunt ',
	' "F" for Forum ',
	' "T" for Transfer ',
	' "C" for Castle ',
	' "I" for Inventory ',
	' "S" for Shop ',
	' "K" for SkillWheel ',
	' "W" for WorkShop',
	' "L" for Your Battle Log',
	' "O" for Your Transfers Log',
	' "R" for Recruiting (army)',
	' "1"-"5" for Dress arts set',
	' "U" for Un-Dress (arts off)',
];
for(i in strs){
	var div = document.createElement('div');
	div.textContent = strs[i];
	helpDiv.appendChild(div);	
}
var d = document.createElement( 'div' );
d.onclick = function(e){
	var kbHelp = document.querySelector('.js-kb-help');
	if(kbHelp.style.display == 'block'){
		kbHelp.style.display = 'none';
	}else{
		kbHelp.style.display = 'block';
	}
};
d.style = 'border:1px solid #999; background-color:#6c6; width:30; height:12; '+
	'position:absolute; top:5px; left:5px; font-size:10px; cursor: pointer;';
d.innerHTML = '<b>_KB</b>';
d.appendChild(helpDiv);
document.body.appendChild( d ) ;


// ========================================================