HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0421
kingタイピングのキーコード?4解決


king

リンク

2008/4/21(Mon) 22:59:49|NO.15294

いつもお世話になっておりますm(_ _)m
早速ですが、前回に引き続きタイピングのことなのですが
!や+()や&、%などの記号をタイピングとして打ち込むことはできるのでしょうか?

例 HSP!100% 
!(shift+1 押し)と%(shift+5 押し)



この記事に返信する


cos

リンク

2008/4/22(Tue) 01:26:18|NO.15295

方法にもよりますが、恐らくできるかと・・・
効率の悪い方法ですが、一応紹介させていただきます


最初はgetkeyでシフトキーの入力を取得してから場合分けなども考えました・・・
しかし、全ての文字に半角記号に対してこれをやるのは面倒・・・
というわけで、getkeyを使う案はバッサリ切り捨てて考えててみることにしました

入力状態の取得といっても何もgetkeyやstickだけじゃないと思います
例えば、inputやmesboxといったオブジェクト・・・
これらは数値や文字を入力するためのものであるため、当然「入力状態の取得」も行っています
(あたりまえですが、シフトキーによる半角記号の入力も行えます)
つまり、こいつを介せばシフトキーでも何でも、
文字コードとして変数に格納できるものは全て取得できるということになります

以下、サンプル
入力は大きさ0の実質「見えない入力ボックス」に対して行っています
かなり邪道で非効率ですが、とりあえず機能だけなら実現できるかと・・・
また、わかりにくいですが、動作応答は「正しい文字を入力したときのみ」です。
シフトキーによる大文字小文字もチェックされています。


#define word_num_max 3 //辞書データの代わり sdim dictionary,64,word_num_max dictionary(0)="0.1=10%" dictionary(1)="1+2+...+N=(1/2)n(n+1)" dictionary(2)="I'll_be_back!!" //入力用に0×0の大きさの入力ボックスを作る pos 0,0 inp="" input inp,0,0 objID_inp=stat //メイン部分 gsel 0 randomize dim dwkey_fl,255 *top string=dictionary(rnd(word_num_max)) string_ofs=0 //stringのオフセット check_char="" check_int=0 redraw 0 pos 0,0 color 255,255,255:boxf:color//画面を塗りつぶし mes "入力単語↓\n"+string *start //入力情報の取得 objsel objID_inp //フォーカスを入力ボックスに合わせる check_int=peek(string,string_ofs) //入力文字コードを読む if check_int>127{ //2byte文字 check_int=wpeek(string,string_ofs) check_int_n=2 dwkey=wpeek(inp,0) wpoke check_char,,dwkey }else{ //1byte文字 check_int_n=1 dwkey=peek(inp,0) poke check_char,,dwkey } //判定 if dwkey=check_int{ pos string_ofs*8,50:mes check_char string_ofs+=check_int_n //stringのオフセットをずらす } objprm objID_inp,"" redraw 1 await 10 redraw 0 if string_ofs>strlen(string):goto*top //stringを入力が完了した goto*start



cos

リンク

2008/4/22(Tue) 01:35:39|NO.15296

>文字コードとして変数に格納できるものは全て取得できる
言い忘れてすみません
さすがに改行コードやタブまでは無理した・・・

「ひらがな」などの2byte文字の取得も一応はできるのですが、入力ボックスは見えないため、
enterを押す必要のある文字はかなり入力しにくいのが現状ですのであしからず



SYAM

リンク

2008/4/22(Tue) 10:49:35|NO.15299

onkeyでジャンプした時のiparamを使えばできます。
ジャンプした先でgetkeyでシフトキーを調べるとよいです。
iparamの値を加減算してstrmidのインデックスに利用すれば好きな文字への変換もできます。



king

リンク

2008/4/23(Wed) 10:22:40|NO.15330

返信ありがとうございます!
是非参考にさせていただきます!!



ONION software Copyright 1997-2023(c) All rights reserved.