MAC と Bluetooth でペアリングし、ブラウザから keyCode, mouse.button を取った場合のキーアサイン。
- L, R, SELECT, START, X, Y が MouseEvent.button = 1 になってしまうため判別できない
- Up, Down, Left, Right, A, B は判別可能。Bボタンを取るためには、コンテキストメニューを禁止する必要がある
+---+-----------------------------------+---+
+ m1 +--+ +--+ m1 +
| |Up| |m1| |
| +--+ +--+ +--+ +--+ |
| Left Right |m1 m0| |
| +--+ +--+ SELECT START +--+ +--+ |
| Down +- -+ +- -+ |m2| |
| +--+ +- m1 -+ +- m1 -+ +--+ |
+-------------------------------------------+
<!DOCTYPE html><html><head><title>GamePad and KeyCode test</title>
<meta name="viewport" content="width=device-width, user-scalable=no">
<meta charset="utf-8"></head><body onContextmenu="return false">
<input type="text" id="keydown" value="" />
<input type="text" id="keyup" value="" />
<input type="text" id="mousedown" value="" />
<input type="text" id="mouseup" value="" />
<textarea></textarea>
<script>
function getTextArea() { return document.body.querySelector("textarea"); }
function getInputs() { return document.body.querySelectorAll("input"); }
var textArea = null;
window.onload = function() {
textArea = getTextArea();
textArea.focus();
textArea.addEventListener("keydown", handleEvent, false);
textArea.addEventListener("keyup", handleEvent, false);
textArea.addEventListener("mousedown", handleEvent, false);
textArea.addEventListener("mouseup", handleEvent, false);
}
function handleEvent(event) {
var inputs = getInputs();
//console.log(event.type);
switch (event.type) {
case "keydown":
inputs[0].value = event.keyIdentifier + "|" + event.keyCode;
break;
case "keyup":
inputs[1].value = event.keyIdentifier + "|" + event.keyCode;
break;
case "mousedown":
inputs[2].value = event.button + "|" + event.buttons;
break;
case "mouseup":
inputs[3].value = event.button + "|" + event.buttons;
break;
}
console.dir(event);
event.preventDefault();
event.stopPropagation();
textArea.focus();
}
</script>
</body></html>