Limited availability
KeyboardEvent.code
ããããã£ã¯ãï¼ãã¼å
¥åã«ãã£ã¦å
¥åãããæåã§ã¯ãªãï¼ãã¼ãã¼ãä¸ã®ç©ççãªãã¼ã表ãã¾ããã¤ã¾ãããã®ããããã£ã¯ãã¼ãã¼ãã¬ã¤ã¢ã¦ãã修飾ãã¼ã®ç¶æ
ã«ãã£ã¦å¤æ´ãããåã®å¤ãè¿ãã¾ãã
å ¥åæ©å¨ãç©çãã¼ãã¼ãã§ã¯ãªããä»®æ³ãã¼ãã¼ããã¢ã¯ã»ã·ããªãã£æ©å¨ã§ããå ´åãè¿å¤ã¯ç©çãã¼ãã¼ãããå ¥åãããå ´åã«ã§ããã ãè¿ã¥ããããç©çãã¼ãã¼ãã¨ä»®æ³å ¥åæ©å¨ã¨ã®äºææ§ãæå¤§ã«ããããããã©ã¦ã¶ã¼ã«ãã£ã¦è¨å®ããã¾ãã
ãã®ããããã£ã¯ããã¼ã«é¢é£ä»ãããã¦ããæåã§ã¯ãªããå
¥åæ©å¨ä¸ã®ç©ççãªä½ç½®ã«åºã¥ãã¦ãã¼å
¥åãæ±ãããã¨ãã«å½¹ç«ã¡ã¾ããããã¯ç¹ã«ããã¼ãã¼ããã²ã¼ã ãããã®ããã«ä½¿ãããå ´åãªã©ã«æç¨ã§ãããã ãã KeyboardEvent.code
ã§å ±åãããå¤ãç¨ãã¦ãã¼å
¥åã§çæãããæåã夿ããã¹ãã§ã¯ããã¾ããããã¼ã³ã¼ãåããã¼ä¸ã«å°å·ããã¦ããå®éã®æåãããã¼ãæ¼ãããã¨ãã«ã³ã³ãã¥ã¼ã¿ã¼ãçæããæåã¨ä¸è´ããã¨ã¯éããªãããã§ãã
ä¾ãã°ãè¿ã£ã¦ãã code
ã "KeyQ
" 㯠QWERTY ã¬ã¤ã¢ã¦ãã®ãã¼ãã¼ãã§ã¯ Q ãã¼ã§ãããåã Dvorak ãã¼ãã¼ãã§ã¯åã code
ã®å¤ã ' ãã¼ã表ãã AZERTY ãã¼ãã¼ãã§ã¯ A ãã¼ã表ããã®ã§ãããã¾ãããããã£ã¦ããã¹ã¦ã®ã¦ã¼ã¶ã¼ãç¹å®ã®ãã¼ãã¼ãã¬ã¤ã¢ã¦ãã使ç¨ãã¦ããããã§ã¯ãªãããã code
ã®å¤ãç¨ãã¦ã¦ã¼ã¶ã¼ãèªèãã¦ãããã¼ã®ååãä½ã§ããããç¹å®ãããã¨ã¯ã§ãã¾ããã
ãã¼ã¤ãã³ãã«å¯¾å¿ããæåãä½ã§ããããå¤å¥ããã«ã¯ã代ããã« KeyboardEvent.key
ããããã£ã使ç¨ãã¦ãã ããã
Windows, Linux, macOS ã«ãããã³ã¼ãå¤ã¯ã KeyboardEvent: ã³ã¼ãå¤ã®ãã¼ã¸ã«ããã¾ãã
ä¾ KeyboardEvent ã®ä½¿ç¨ä¾ HTML<p>
ãã¼ãã¼ãã®ãã¼ãæ¼ãã¦ã KeyboardEvent ã®ãã¼ã¨ã³ã¼ãã®å¤ãããããã©ããªã£ã¦ãããã確èªãã¾ãããã
</p>
<div id="output" tabindex="0"></div>
CSS
#output {
font-family: Arial, Helvetica, sans-serif;
border: 1px solid black;
width: 95%;
margin: auto;
}
#output:focus-visible {
outline: 3px solid dodgerblue;
}
JavaScript
window.addEventListener(
"keydown",
(event) => {
const p = document.createElement("p");
p.textContent = `KeyboardEvent: key='${event.key}' | code='${event.code}'`;
document.getElementById("output").appendChild(p);
window.scrollTo(0, document.body.scrollHeight);
},
true,
);
試ãã¦ã¿ã¾ããã
ãã¼å ¥åããµã³ãã«ã³ã¼ãã«åå¾ãããããã«ããã¼ãå ¥åããåã« output ããã¯ã¹ãã¯ãªãã¯ãã¦ãã ããã
ã²ã¼ã ã§ã®ãã¼ãã¼ãã¤ãã³ãã®æ±ããã®ä¾ã§ã¯ãå
¸åç㪠"WASD" ãã¼ãã¼ãã¬ã¤ã¢ã¦ãã使ç¨ãã¦åé²ãå·¦æãå¾éã峿ããã²ã¼ã ã®ãã¼ãã¼ãå
¥åãå¦çãã keydown
ã¤ãã³ãã«å¯¾ããã¤ãã³ããªã¹ãã¼ã確ç«ãã¦ãã¾ããããã¯ãã¦ã¼ã¶ã¼ã AZERTY ãã¼ãã¼ãã使ç¨ãã¦ããå ´åãªã©ãå®éã«å¯¾å¿ããæåãä½ã§ãããã«é¢ä¿ãªããç©ççã«åã 4 ã¤ã®ãã¼ã使ç¨ãã¾ãã
<p>
WASD ãã¼ï¼AZERTY ãã¼ãã¼ãã§ã¯
ZQSDï¼ã使ã£ã¦ç§»åãããæ¹åãå¤ããããã¾ãããã
</p>
<svg
xmlns="http://www.w3.org/2000/svg"
version="1.1"
class="world"
tabindex="0">
<polygon id="spaceship" points="15,0 0,30 30,30" />
</svg>
CSS
.world {
margin: 0px;
padding: 0px;
background-color: black;
width: 400px;
height: 400px;
}
.world:focus-visible {
outline: 5px solid dodgerblue;
}
#spaceship {
fill: orange;
stroke: red;
stroke-width: 2px;
}
JavaScript
ãã® JavaScript ã®ã³ã¼ãã®æåã®é¨åã§ã¯ããããã使ç¨ããããã¤ãã®å¤æ°ãå®ç¾©ãã¦ãã¾ãã shipSize
ã«ã¯ãã¬ã¤ã¤ã¼ãç§»åããè¹ã®å¤§ãããå
¥ãã¾ãã position
ã¯ãã¬ã¤ãã£ã¼ã«ãå
ã§ã®è¹ã®ä½ç½®ã追跡ããããã«ä½¿ç¨ãã¾ãã moveRate
ã¯ãã¼ãæ¼ããã¨ã«è¹ãåå¾ã«ä½ãã¯ã»ã«åãããã表ãã turnRate
ã¯ãã¼ãæ¼ããã¨ã«å·¦å³ã®æèµã³ã³ããã¼ã«ã§ä½åº¦å転ããããã表ãã¾ãã angle
ã¯ç¾å¨è¹ã«é©ç¨ããã¦ããå転ã®éã度æ°ã§è¡¨ãã 0 度ï¼çä¸åãï¼ããå§ã¾ãã¾ããæå¾ã«ã spaceship
㯠ID "spaceship"
ã®è¦ç´ ãæãããã«è¨å®ããã¦ãã¾ããããã¯ããã¬ã¤ã¤ã¼ãæä½ããè¹ã表ã SVG ããªã´ã³ãæãã¾ãã
let shipSize = {
width: 30,
height: 30,
};
let position = {
x: 200,
y: 200,
};
let moveRate = 9;
let turnRate = 5;
let angle = 0;
let spaceship = document.getElementById("spaceship");
次ã«ã颿° updatePosition()
ãããã¾ãããã®é¢æ°ã¯ãè¹ãç§»åãããè·é¢ãå
¥åã¨ãã¦åãåãã¾ããæ£ã®å¤ã¯åé²ãè² ã®å¤ã¯å¾éãæå³ãã¾ãããã®é¢æ°ã¯ãç§»åããè·é¢ã¨è¹ãç¾å¨åãã¦ããæ¹åãããè¹ã®æ°ããä½ç½®ãè¨ç®ãã¾ããã¾ãããã¬ã¤ãã£ã¼ã«ãã®å¢çãè¶ããéã«è¹ãæ¶ãããå¢çãã¾ããããã«ããå¦çãè¡ãã¾ãã
function updatePosition(offset) {
let rad = angle * (Math.PI / 180);
position.x += Math.sin(rad) * offset;
position.y -= Math.cos(rad) * offset;
if (position.x < 0) {
position.x = 399;
} else if (position.x > 399) {
position.x = 0;
}
if (position.y < 0) {
position.y = 399;
} else if (position.y > 399) {
position.y = 0;
}
}
refresh()
颿°ã¯ SVG ã® transform ã使ç¨ãã¦ãåãã¨ä½ç½®ãé©ç¨ããå¦çãè¡ãã¾ãã
function refresh() {
let x = position.x - shipSize.width / 2;
let y = position.y - shipSize.height / 2;
let transform = `translate(${x} ${y}) rotate(${angle} 15 15) `;
spaceship.setAttribute("transform", transform);
}
refresh();
æå¾ã«ãaddEventListener()
ã¡ã½ããã使ç¨ã㦠keydown
ã¤ãã³ãã®å¾
ã¡åããéå§ãã¾ããããããã®ã¤ãã³ãã§è¹ã®ä½ç½®ã¨å転è§ãæ´æ°ãã refresh()
ãå¼ã³åºãã¦æ°ããä½ç½®ã¨è§åº¦ã§è¹ãæç»ããããã«åä½ãã¾ãã
window.addEventListener(
"keydown",
(event) => {
if (event.defaultPrevented) {
return; // Do nothing if event already handled
}
switch (event.code) {
case "KeyS":
case "ArrowDown":
// Handle "back"
updatePosition(-moveRate);
break;
case "KeyW":
case "ArrowUp":
// Handle "forward"
updatePosition(moveRate);
break;
case "KeyA":
case "ArrowLeft":
// Handle "turn left"
angle -= turnRate;
break;
case "KeyD":
case "ArrowRight":
// Handle "turn right"
angle += turnRate;
break;
}
refresh();
if (event.code !== "Tab") {
// Consume the event so it doesn't get handled twice,
// as long as the user isn't trying to move focus away
event.preventDefault();
}
},
true,
);
試ãã¦ã¿ã¾ããã
ãã¼å ¥åã確å®ã«ãµã³ãã«ã³ã¼ãã«åæ ãããããã«ããã¼ãæ¼ãåã«ä¸ã®é»ãã²ã¼ã ãã¬ã¤ãã£ã¼ã«ããã¯ãªãã¯ã¾ãã¯ãã©ã¼ã«ã¹ãã¦ãã ããã
ãã®ã³ã¼ããæ¹åããæ¹æ³ã¯ããã¤ãããã¾ããå®éã®ã²ã¼ã ã§ã¯ããã¼ãªãã¼ãã«é ¼ãã®ã§ã¯ãªããkeydown
ã¤ãã³ããç£è¦ãã¦ããããçºçãããåä½ãéå§ãã対å¿ãã keyup
ãçºçãããåä½ã忢ãããã¨ãã»ã¨ãã©ã ã¨æãã¾ãããããããã¨ã§ãããã¹ã ã¼ãºã§é«éãªç§»åãå¯è½ã«ãªãããã¬ã¤ã¤ã¼ã¯ç§»åã¨æèµãåæã«è¡ããããã«ãªãã¾ãããã©ã³ã¸ã·ã§ã³ãã¢ãã¡ã¼ã·ã§ã³ã使ç¨ãã¦ãèªæ©ã®åããããæ»ããã«ãããã¨ãã§ãã¾ãã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4