mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-25 02:57:30 +00:00
Abstract hotkey code
This commit is contained in:
parent
4305e117c0
commit
ca1ec7e59d
3 changed files with 68 additions and 61 deletions
65
hotkeys.js
Normal file
65
hotkeys.js
Normal file
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -93,6 +93,7 @@
|
|||
<script src="font.js"></script>
|
||||
<script src="skin.js"></script>
|
||||
<script src="multi-display.js"></script>
|
||||
<script src="hotkeys.js"></script>
|
||||
<script src="winamp.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
63
winamp.js
63
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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue