

はじめまして。
上記のようなプログラムを教えていただきたく、
投稿しました。
わたしは、心理学を専攻する大学院生です。
修士論文の実験でこのようなツールが必要となり、
学校のコンピュータルームに相談に行ったところ、
JavaScriptという言語で、このようなプログラムが
作れると聞き、ここ1月格闘してまいりました。
しかし、プログラムに関してはまったくの素人で、
お手上げ状態です。
したがって、こちらで皆さんのお助けを願ったしだいです。
概要は以下の通りです。
指定した時間の間(たとえば5分間)に、
1.何回キーを押したのか、
2.各回ごとに、どのくらいの時間(ミリ秒単位)押したのか
3.キーを押していた合計時間を測定したいと思っております。
そのために、以下の機能を備えたプログラムを求めています。
1.タイマー機能がついていること(実験開始と終了の操作が自動でできる)。
2.実験を開始・終了した時刻が取得できる。
3.各回のキーを押し始めた時刻が取得できる。
4.各回のキーを離した時刻が取得できる。
以上の説明、わかりにくい点もあるかと思います。
資金に余裕のない学生なので、
ソフトを購入することはできません。
この本を読めば分かる、といったアドバイスもありがたいのですが、プログラムがとても苦手のようです。
これらの点を考慮して、お助けいただける方、
ご回答お願いいたします。
No.1ベストアンサー
- 回答日時:
一応
>以下の機能を備えたプログラム
を作ってみました。IE用です。
昨今のマシン(メモリやCPU)では、あまり問題にならないスピードで動くとは思いますが、1ミリ秒の精度があるかというと(値は求まっても)かなり疑問です。(データが増えるにつれて画面の更新の時間も(ミリ秒という精度では)影響するかもしれません)
多分、集計するプログラム(処理)は別にあるものと想定し作っていません。
エンターキーを押すと開始します。(マウスで開始ボタンをクリックしても良い)
エンターキーによる開始の場合最初にエンターキーのキーアップが記録されます。
あとは、適当にキーを押します。
-----8<-----8<-----8<-----8<-----8<-----8<-----
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS">
<title>限定された時間内に押されたキーの時間を集計する</title>
<script language="JScript">
<!--
var keyPushState=false; //キーが押されていない
var result; //結果を表示するテキストエリア
var time; //キーが押された時間
var IntervalID;//実行時間制御
window.onload=init;
function init(){
document.body.onkeydown=keyDown;
document.body.onkeyup=keyUp;
document.getElementById("startButton").focus();
result = document.getElementById("result");
IntervalID=undefined;
}
function keyDown(){
time = new Date();
if(!keyPushState){//キーが既に押されている状態である
keyPushState=true;
result.value += String.fromCharCode(window.event.keyCode)+":KeyDown at "+timeFormat(time)+"\n";
}
}
function keyUp(){
time = new Date();
result.value += String.fromCharCode(window.event.keyCode)+":KeyUp at "+timeFormat(time)+"\n";
keyPushState=false;
}
function timeFormat(t){// HH:MM:SS.sss
return (
ZeroFormat(t.getHours(), 2)+":"+
ZeroFormat(t.getMinutes(),2)+":"+
ZeroFormat(t.getSeconds(),2)+"."+
ZeroFormat(t.getMilliseconds(),3)
);
}
function ZeroFormat(num, n){// ZeroFormat(1,3) => "001"
var ret=""+num;
while(ret.length < n){
ret = "0" + ret;
}
return (ret);
}
function start(){
if(IntervalID==undefined){
document.body.onkeydown=keyDown;
document.body.onkeyup=keyUp;
result.value="開始時間"+timeFormat(new Date())+"\n";
IntervalID=setInterval("start()",5*60*1000);//5分
} else {
result.value+="終了時間"+timeFormat(new Date())+"\n";
document.body.onkeydown=null;
document.body.onkeyup=null;
clearInterval(IntervalID);
alert("終了しました");
}
}
//-->
</script>
</head>
<body>
<button id="startButton" type="button" onclick="start()">開始</button><br>
<textarea id="result" cols="60" rows="30" READONLY></textarea><br>
もう一度実行するときは、画面を更新して下さい。
</body>
</html>
BLUEPIXYさま
hiromiro0423です。
ありがとうございました。
早速、ためしに使わさせていただきました。
時刻のみならず、押したキーも取得するように
していただいたのですね。
とても満足です。
直接お返しは出来ないかもしれませんが、
コミュニティに出来るだけ還元し
お役に立てればと思っております。
ありがとうございました。
No.2
- 回答日時:
function init(){}の中の
>document.body.onkeydown=keyDown;
>document.body.onkeyup=keyUp;
の2行を削除しておいて下さい。
削除し忘れです。
開始前にキー入力時間の記録をしてしまいます。
行の先頭に
//
を入れておいて、場合によっては復活させて、特に入力時間を制限しない場合に使うといいかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windows上のプログラム。「予め決められた時刻に自分で起動して処理して自分で終了する」って可能? 3 2023/01/04 14:29
- その他(コンピューター・テクノロジー) 50台の織機から回転数を取得・集計しモニターに表示したい 2 2022/11/05 15:48
- その他(ビジネス・キャリア) グーグルの障害者訓練プログラム募集あるがどうだろ?6時間勤務で月収22万!! 1 2023/02/17 20:36
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- バイク車検・修理・メンテナンス HONDA PCX125に関する質問です。 拙い文章な上、バイクに関する知識が不十分なため所々分かり 1 2022/08/08 19:52
- その他(学校・勉強) 来年4月から経済学部の大学一年生になる予定の者です。 私は将来入りたい企業があり、そこに入社するため 8 2022/08/23 04:49
- インターネット広告・アフィリエイト アフェリエイトサイト 作成について 5 2022/05/13 21:31
- その他(学校・勉強) スシロー “ペロペロ高校生” は、日本の教育の失敗ですね? 20 2023/02/08 07:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptでiframeの内容を「...
-
SCRIPT5007: 未定義または NULL...
-
htaでVBSのソースを書いたらエ...
-
フォーカス移動抑止について
-
function の return 値を表示し...
-
javascriptについて
-
日付のチェック
-
教えてください
-
JavaScriptでの西暦下2桁での表...
-
getElementsByNameで要素が取得...
-
クリックすると別の文章を表示する
-
JavaScript でキーを送る
-
XMLHTTPRequestでstatusが0に
-
<a href="#" …>の意味を教えて...
-
html メールリンクにて自動ファ...
-
特定のウィンドウ名を持つウィ...
-
<FORM>タグのtargetに値を書込...
-
ページを表示すると同時に複数...
-
別ファイルのfunctionの読み込み方
-
ホームディレクトリを示すチル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptでiframeの内容を「...
-
SCRIPT5007: 未定義または NULL...
-
getElementsByNameで要素が取得...
-
JavaScript でキーを送る
-
キーを押している間の時間を計...
-
function の return 値を表示し...
-
クリックすると別の文章を表示する
-
フォーカス移動抑止について
-
ボタンのID名を取得するには?
-
bodyタグのfocus
-
JavaScriptでのEnterキーとAlt+...
-
【js】onsubmit属性が変更できない
-
自動ジャンプでフォームデータ...
-
idHOGEで取得したinnerText(数...
-
htaでVBSのソースを書いたらエ...
-
AjaxでDBから取得したデータを...
-
javascriptで質問があります。
-
GoogleMapのmoveイベントのjava...
-
<body>タグを書き換えたい
-
マウスクリックした地点のテキ...
おすすめ情報