デモ command, shift, control, 4に対応
左からtrue/false キー キーコードの順
command:91
shift:16
control:17
num4:52
4以外のキーの同時押しには反応する
最後に4を加えると反応しなくなる(ここは未解決)
関連記事
前提
command + shift + control + 4
を同時に押して
選択した範囲をスクリーンショットに撮ると
クリップボードに保存される
(Macでスクリーンショットを撮ってクリップボードに保存する)
やりたいこと(未完)
command + shift + control + 4を同時に押して放した時に
クリップボードのデータを取得したい
と思って作ってみたらできなかったという話。
おそらく方法はあるのだろうけど、深そうなので追うのはやめました。
できたところまでのコードを残しておきます。
最後の「4」を押した時にkeydownで検知できないという壁がありました。
「4」単体であれば押した時に検知できるが上記でのキーを組み合わせたときには検知できなくなる。
コード.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile("index");
}
|
意訳この機能がやること 指定したHTMLファイルを表示する |
index.html
<!DOCTYPE html>
<html>
<body>
<label id="cmd">false</label>command:91
<br>
<label id="sht">false</label>shift:16
<br>
<label id="ctrl">false</label>control:17
<br>
<label id="num4">false</label>num4:52
<br>
<script>
/************************************
イベント
************************************/
document.onkeydown = function(e) { down_up_keycode(e,"down")};
document.onkeyup = function(e) { down_up_keycode(e, "up")};
document.onmouseup = mouse_up;
/************************************
mouse_up
************************************/
function mouse_up(){
var ids = get_key_values();
var result = get_text_content(ids)
}
function get_text_content(ids){
var result;
for(var i = 0; i < ids.length; i++){
result = elem(ids[i]).textContent;
if(result !== "true"){
break;
}
}
}
/************************************
down_up_keycodey
************************************/
function down_up_keycode(e, flag){
var keycode = get_keycode(e);
switch(flag){
case "down":
down_case(keycode);
break;
case "up":
up_case(keycode);
break;
}
}
/************************************
down_case
************************************/
function down_case(keycode){
elem(key_obj[keycode]).textContent = true;
}
/************************************
up_case
************************************/
function up_case(keycode){
elem(key_obj[keycode]).textContent = false;
if(keycode === 52){
alert("4が押されました");
}
}
/************************************
key_obj
************************************/
var key_obj = {
91: "cmd",
16: "sht",
17: "ctrl",
52: "num4"
}
/************************************
elem
************************************/
function elem(id){
return document.getElementById(id);
}
/************************************
get_keycode
************************************/
function get_keycode(e){
var keycode = e.keyCode;
return keycode;
}
/************************************
get_key_values
************************************/
function get_key_values() {
var keys = Object.keys(key_obj);
var values = [];
for (var i = 0; i < keys.length; i++) {
var value = key_obj[keys[i]];
values.push(value);
}
return values;
}
</script>
</body>
</html>
|