diff --git a/hotkeys.js b/hotkeys.js new file mode 100644 index 00000000..e5bf852f --- /dev/null +++ b/hotkeys.js @@ -0,0 +1,65 @@ +Hotkeys = { + init: function(winamp) { + keylog = []; + trigger = [78,85,76,27,76,27,83,79,70,84]; + document.onkeyup = function(e){ + var key = e.keyCode; + // Keys that correspond to node clicks + var keyboardAction = { + 66: winamp.nodes.next, // B + 67: winamp.nodes.pause, // C + 76: winamp.nodes.eject, // L + 86: winamp.nodes.stop, // V + 82: winamp.nodes.repeat, // R + 83: winamp.nodes.shuffle, // S + 88: winamp.nodes.play, // X + 90: winamp.nodes.previous, // Z + 100: winamp.nodes.previous, // numpad 4 + 101: winamp.nodes.play, // numpad 5 + 102: winamp.nodes.next, // numpad 6 + 96: winamp.nodes.eject // numpad 0 + }; + if(keyboardAction[key]){ + keyboardAction[key].click(); + }else if(e.keyCode == 76 && e.ctrlKey){ //CTRL+L + winamp.nodes.option.click(); + }else if(e.keyCode == 68 && e.ctrlKey){ //CTRL+D + winamp.nodes.buttonD.click(); + }else if(e.keyCode == 84 && e.ctrlKey){ //CTRL+T + winamp.nodes.time.click(); + }else{ + switch (key){ + // *1 is used to cast these values to integers. Could be improved. + // up arrow + case 38: winamp.setVolume((winamp.nodes.volume.value*1)+1); break; + // numpad 8 + case 104: winamp.setVolume((winamp.nodes.volume.value*1)+1); break; + // down arrow + case 40: winamp.setVolume((winamp.nodes.volume.value*1)-1); break; + // numpad 2 + case 98: winamp.setVolume((winamp.nodes.volume.value*1)-1); break; + // left arrow + case 37: winamp.media.seekToTime(winamp.media.timeElapsed() - 5); winamp.updateTime(); break; + // numpad 7 + case 103: winamp.media.seekToTime(winamp.media.timeElapsed() - 5); winamp.updateTime(); break; + // right arrow + case 39: winamp.media.seekToTime(winamp.media.timeElapsed() + 5); winamp.updateTime(); break; + // numpad 9 + case 105: winamp.media.seekToTime(winamp.media.timeElapsed() + 5); winamp.updateTime(); break; + // numpad 1 + case 97: /* Placeholder for jump backwards 10 songs in playlist or to start of */ break; + // numpad 3 + case 99: /* Placeholder for jump forwards 10 songs in playlist or to start of */ break; + } + } + + // Easter Egg + keylog.push(key); + keylog = keylog.slice(-10); + if(keylog.toString() == trigger.toString()) { + document.getElementById('winamp').classList.toggle('llama'); + } + } + } +} + diff --git a/index.html b/index.html index 0400595d..81997624 100755 --- a/index.html +++ b/index.html @@ -93,6 +93,7 @@ + diff --git a/winamp.js b/winamp.js index 8b891523..3b83d94d 100755 --- a/winamp.js +++ b/winamp.js @@ -503,67 +503,6 @@ Winamp = { } } -keylog = []; -trigger = [78,85,76,27,76,27,83,79,70,84]; -document.onkeyup = function(e){ - var key = e.keyCode; - // Keys that correspond to node clicks - var keyboardAction = { - 66: winamp.nodes.next, // B - 67: winamp.nodes.pause, // C - 76: winamp.nodes.eject, // L - 86: winamp.nodes.stop, // V - 82: winamp.nodes.repeat, // R - 83: winamp.nodes.shuffle, // S - 88: winamp.nodes.play, // X - 90: winamp.nodes.previous, // Z - 100: winamp.nodes.previous, // numpad 4 - 101: winamp.nodes.play, // numpad 5 - 102: winamp.nodes.next, // numpad 6 - 96: winamp.nodes.eject // numpad 0 - }; - if(keyboardAction[key]){ - keyboardAction[key].click(); - }else if(e.keyCode == 76 && e.ctrlKey){ //CTRL+L - winamp.nodes.option.click(); - }else if(e.keyCode == 68 && e.ctrlKey){ //CTRL+D - winamp.nodes.buttonD.click(); - }else if(e.keyCode == 84 && e.ctrlKey){ //CTRL+T - winamp.nodes.time.click(); - }else{ - switch (key){ - // *1 is used to cast these values to integers. Could be improved. - // up arrow - case 38: winamp.setVolume((winamp.nodes.volume.value*1)+1); break; - // numpad 8 - case 104: winamp.setVolume((winamp.nodes.volume.value*1)+1); break; - // down arrow - case 40: winamp.setVolume((winamp.nodes.volume.value*1)-1); break; - // numpad 2 - case 98: winamp.setVolume((winamp.nodes.volume.value*1)-1); break; - // left arrow - case 37: winamp.media.seekToTime(winamp.media.timeElapsed() - 5); winamp.updateTime(); break; - // numpad 7 - case 103: winamp.media.seekToTime(winamp.media.timeElapsed() - 5); winamp.updateTime(); break; - // right arrow - case 39: winamp.media.seekToTime(winamp.media.timeElapsed() + 5); winamp.updateTime(); break; - // numpad 9 - case 105: winamp.media.seekToTime(winamp.media.timeElapsed() + 5); winamp.updateTime(); break; - // numpad 1 - case 97: /* Placeholder for jump backwards 10 songs in playlist or to start of */ break; - // numpad 3 - case 99: /* Placeholder for jump forwards 10 songs in playlist or to start of */ break; - } - } - - // Easter Egg - keylog.push(key); - keylog = keylog.slice(-10); - if(keylog.toString() == trigger.toString()) { - document.getElementById('winamp').classList.toggle('llama'); - } -} - winamp = Winamp.init({ 'volume': 50, 'balance': 0, @@ -573,3 +512,5 @@ winamp = Winamp.init({ }, 'skinUrl': 'https://cdn.rawgit.com/captbaritone/winamp2-js/master/skins/base-2.91.wsz' }); + +Hotkeys.init(winamp);