mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-22 17:47:16 +00:00
113 lines
2.8 KiB
JavaScript
113 lines
2.8 KiB
JavaScript
import {
|
|
play,
|
|
pause,
|
|
stop,
|
|
adjustVolume,
|
|
toggleRepeat,
|
|
toggleShuffle,
|
|
openFileDialog
|
|
} from './actionCreators';
|
|
|
|
module.exports = function(winamp, store) {
|
|
let keylog = [];
|
|
const trigger = [
|
|
78, // N
|
|
85, // U
|
|
76, // L
|
|
76, // L
|
|
83, // S
|
|
79, // O
|
|
70, // F
|
|
84 // T
|
|
];
|
|
document.addEventListener('keydown', (e) => {
|
|
if (e.ctrlKey) { // Is CTRL depressed?
|
|
switch (e.keyCode) {
|
|
case 68: // CTRL+D
|
|
store.dispatch({type: 'TOGGLE_DOUBLESIZE_MODE'});
|
|
break;
|
|
case 76: // CTRL+L FIXME
|
|
break;
|
|
case 84: // CTRL+T
|
|
store.dispath({type: 'TOGGLE_TIME_MODE'});
|
|
break;
|
|
}
|
|
} else {
|
|
switch (e.keyCode) {
|
|
case 37: // left arrow
|
|
winamp.seekForwardBy(-5);
|
|
break;
|
|
case 38: // up arrow
|
|
store.dispatch(adjustVolume(winamp.media, 1));
|
|
break;
|
|
case 39: // right arrow
|
|
winamp.seekForwardBy(5);
|
|
break;
|
|
case 40: // down arrow
|
|
store.dispatch(adjustVolume(winamp.media, -1));
|
|
break;
|
|
case 66: // B
|
|
winamp.next();
|
|
break;
|
|
case 67: // C
|
|
store.dispatch(pause(winamp.media));
|
|
break;
|
|
case 76: // L
|
|
openFileDialog(winamp);
|
|
break;
|
|
case 82: // R
|
|
store.dispatch(toggleRepeat(winamp.media));
|
|
break;
|
|
case 83: // S
|
|
store.dispatch(toggleShuffle(winamp.media));
|
|
break;
|
|
case 86: // V
|
|
store.dispatch(stop(winamp.media));
|
|
break;
|
|
case 88: // X
|
|
store.dispatch(play(winamp.media));
|
|
break;
|
|
case 90: // Z
|
|
winamp.previous();
|
|
break;
|
|
case 96: // numpad 0
|
|
openFileDialog(winamp);
|
|
break;
|
|
case 97: // numpad 1
|
|
winamp.previous(10);
|
|
break;
|
|
case 98: // numpad 2
|
|
store.dispatch(adjustVolume(winamp.media, -1));
|
|
break;
|
|
case 99: // numpad 3
|
|
winamp.next(10);
|
|
break;
|
|
case 100: // numpad 4
|
|
winamp.previous();
|
|
break;
|
|
case 101: // numpad 5
|
|
store.dispatch(play(winamp.media));
|
|
break;
|
|
case 102: // numpad 6
|
|
winamp.next();
|
|
break;
|
|
case 103: // numpad 7
|
|
winamp.seekForwardBy(-5);
|
|
break;
|
|
case 104: // numpad 8
|
|
store.dispatch(adjustVolume(winamp.media, 1));
|
|
break;
|
|
case 105: // numpad 9
|
|
winamp.seekForwardBy(5);
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Easter Egg
|
|
keylog.push(e.keyCode);
|
|
keylog = keylog.slice(-10);
|
|
if (keylog.toString() === trigger.toString()) {
|
|
store.dispatch({type: 'TOGGLE_LLAMA_MODE'});
|
|
}
|
|
});
|
|
};
|