ショートカットキー
by yshrkn
HTML
<!--
keycodeとpressesCtrl, pressesAltの値に応じて、適切な文字列を出力する関数を作成してください。
条件は、下をご覧ください。例えば、
Ctrl + C : コピー ならば、pressesCtrlがtrue、pressesAltがfalse、keycodeが'c'の場合に'コピー'と出力します。
条件
Ctrl + C : コピー
Ctrl + X : 切り取り
Ctrl + V : 貼り付け
Ctrl + Z : 元に戻す
Alt + D : アドレスバーにフォーカス
Alt + ← : 前に戻る
Alt + → : 次に進む
Alt + ↑ : 上の階層へ
-->
JavaScript
var keycode = ''; // 押されたキー
var pressesCtrl = false; // Ctrlキーが押されているかの真偽値
var pressesAlt = false; // Altキーが押されているかの真偽値
function handleShortcuts(keycode, pressesCtrl, pressesAlt) {
var msg = "存在しないショートカット";
// shortcutsMap内のキーコードと比較するため大文字へ
var _keycode = keycode.toUpperCase();
var shortcutsMap = {
"コピー": ["C", true, false],
"切り取り": ["X", true, false],
"貼り付け": ["V", true, false],
"元に戻す": ["Z", true, false],
"アドレスバーにフォーカス": ["D", false, true],
"前に戻る": ["←", false, true],
"次に進む": ["→", false, true],
"上の階層へ": ["↑", false, true]
};
for (var key in shortcutsMap) {
var isExistingShortcut = _keycode === shortcutsMap[key][0] &&
shortcutsMap[key][1] === pressesCtrl &&
shortcutsMap[key][2] === pressesAlt
? true : false;
if (isExistingShortcut) {
return key;
}
}
return msg;
}
keycode = 'z';
pressesCtrl = true;
pressesAlt = false;
console.log(handleShortcuts(keycode, pressesCtrl, pressesAlt));
// 元に戻す
keycode = '↑';
pressesCtrl = false;
pressesAlt = true;
console.log(handleShortcuts(keycode, pressesCtrl, pressesAlt));
// 上の階層へ