致命的問題クリア!

先日より公開中のASUS Transbook T90Chi用マウス補完アプリ「ChiPointer」の
スリープ問題ですが、運がいいことにもしや?と思ったところの修正で
改善され、おそらく問題なくなったと思われる状態になったので
ダウンロード配布再開しました!
ま、、、まだ不十分なチェックなので再び何等か問題あるかもしれませんが
よろしくお願いいたします。

機能無効キーを実装しました

昨夜公開したASUS Transbook T90chi用のマウス補完アプリ
「ChiPointer」をちょっとだけバージョンアップしました。

Dropbox - Link not found

「H」+「L」で機能を有効/無効できます。
職場でも試しに本ソフト導入してみたんですが、
vimを使用するときやTeraTermLinuxへアクセスしてるとき
vi使用する際にむろんH,J,K,Lキーを長押しするので
邪魔になるんですよね(汗)
そりゃそうだ(汗汗汗)
ということで
ソフトを終了することなく機能のON/OFFができるようになりました。

個人的にはもう十分すぎる機能になりました。
実際のT90Chiユーザが使用してくれて、その感想を聞いてみたいなぁ〜(^^;

ASUS Transbook T90chi用マウス補完アプリ「ChiPointer」公開!

昨年夏にLenovo Miix2 8を購入したその年末、
ASUSからとても魅力的なタブレット?なマシンが発売されました。
それが
ASUS Transbook T90chi
タブレットにもノートPCにもなる2in1なる商品です。
昔からこの手の小型PCには目がなかったので、ずっとほしかったのですが
当時は価格が6万円近くしたこと、Miix2 8購入したてだったこと
などがあり手を出せませんでs対。
しかしながら先月頭になんとWindows10モデルになって3万円!とびっくり価格で登場!!
これは、、、ほしぃ〜!!
となったわけですが、、、おいそれと買うわけにはいかず
情報だけを日々調査している状態でした。
そんな矢先、
Amazonにてタイムセール!
300台限定で28,000円程度!
1時間限定!
「うぉ〜」ってぽちっとな。。。してしまいました。
しかも風呂の中(汗)
ああ、かみさんになんて伝えればいいか・・・なんて考えながら
上記購入経緯を全部説明し、、、今に至ります(爆)
ともかく、
VAIO type Pだった私にとってはベストサイズなのには変わりなく、
性能が段違いに上がったPちゃんなわけですが、
残念なことにマウスポインタがないんですよね。
VAIO type Pにあったアキュポイント、あれ最高だったんですけどね。
これがついてればなぁ〜とおもってもしょうがないので
それに代わるアプリを作ることにしました(汗)
詳細は同梱されている説明書を見てください。

完全に自分仕様のベータ製品です。

特徴は・・・
・マウスモードとキーボードモードの切り替えが別キーによるトリガなしで行える
となります。
トリガも使えますが基本マウスモードとキーボードモードはシームレスに切り替えできます。

完成度は期待しないでください。
また特にサポートは考えていません。
要望はコメントに書いていただくかtwitterで書いていただければ考えてみたいと思います。

Dropboxよりダウンロードしてください。

【履歴】
2015/12/08 ASUS Transbook T90chi用マウス補完アプリ「ChiPointer」初公開
2015/12/09 機能無効キー実装
2015/12/10 実行しているとスリープに入れない重大問題確認→解消へ
2015/12/12 mouse_eventからSendInputへ変更
      中央ボタンを「N」で利用できるようにした。
2015/12/20 タスクトレイ格納型に。格納アイコンを左クリックで終了。
タスクトレイアイコン暫定でshel32.dllのものを使用(汗)
  一応稼働モードに合わせて切り替わります。
また各種モード切替時バルーンメッセージが表示されるようになった(実験中)
2016/02/15 ビルドバージョン18。
      検証版のため人柱専用。
      マウスモードに切り替わるときの動きを一部変更。
      誤爆の可能性もあるが、マウスモードに切り替わりの際、
      最後に入力したキーがエンター以外の場合はBSを1キー
      エンターキーを含め他のキーの場合ESCを1キー入力されるように変更。
      これによりマウスモードに切り替わった際に余計な文字などが自動削除される動きとなった。
      実はこれ、以前のバージョンでも一時導入していた時があったが誤爆が多く
      断念していたものを見直しして再導入した。はたして。。。
2016/02/16 ビルドバージョン19。
      検証版のため人柱専用。
      Win10のメーラーやスケジュールで誤爆ありのため、
      ESCなし制御版を作製。これでよいか?
      というか、IE11やWinアプリ寄りのIME挙動変ではないかな?
      IE11は独自にキーフックしてるかもしれないね。。。対応難しいかも。
2016/02/17 ビルドバージョン20。
      検証版のため人柱専用。
      IE11で検索バーに何か入力した後マウスモードになると「BS」キーの内部発行により
      「戻る」が一度押されてしまうのと同じ状態になってしまう「誤爆」に対応。
      それ以外の挙動も多少解消。よりキーボード→マウス時の余計な入力文字を自動で消されるようになった。

2016/02/21 ビルドバージョン21。
      検証版のため人柱専用。
      18〜20までの「BS」発動挙動手法を取りやめ。
      誤爆をどうしても回避できなかったため。
      本バージョンにて「BS」発行手法ではなく、「H」「J」「K」「L」の移動キーに関して
      他キーと異なりキーを押した時ではなく、離した時に入力を受け付ける処理に変更。
      これにより、移動キーがリピートになるまで長押しされた場合、1文字も入力されることなく
      マウスモードに切り替わる挙動とした。
      ただし、キーボードモード時移動キーのみ入力タイミングが変わると妙な違和感および
      文字の取りこぼしが発生するためキーボードモードでは「一呼吸(0.3秒)」を検知し、
      連続入力ではなく、断続入力されているときにのみ移動キーの入力タイミングが変更されるようにした。
      このことでほとんどの場合、マウスへの切り替えはほぼ問題なく移動キーの1文字が入力されてしまうことが
      防げるようになった。長文を書いているときの妙な挙動も特に感じられない。
      またマウスモードからキーボードモードに切り替えに利用できなかったキーとして
      「Z」「C」「X」「V」などがあったが、「Ctrl」や「Alt」併用時には無効化されそれ以外は
      他キーと同様にモード切替に利用できるキーとすることとした。
      再び本バージョンを安定板としてリリース。

      
2016/02/25 ビルドバージョン22.
  Rキー併用のスクロールモード切替時マウスモードになるように内部処理変更。
  マウスモード時「;」キーにて右クリックメニューだが、
  「;」を長押しするとセミコロンを入力できる状態となりそのままキーボードモードになるように変更。
      プログラマは「;」使うからね。    
  バージョン21からの挙動で「一呼吸」おいたあとの「H」「J」「K」「L」キー後の1文字、
  例えば「J」「I」で「じ」といった入力が反応しにくい問題。
  これは「H」「J」「K」「L」を入力した際、離れるまで文字が入力されないため
  離される前に次のキーが入力されてしまうためにおこる問題。
  特に「H」「J」「K」「L」の周りのキーで連続的に入力されやすいものが対象となる。
  これを解消!
  その周りの「U」「I」「O」に関しても同様に離すときにキー入力をするように変更。
  連続入力になる初期2文字までが対象なので通常利用中は全く気が付かない。
  よかった。これでまともになった。
      

2016/02/06 ビルドバージョン24.
      問題だらけで、、、未公開。。。
  いろいろ内部処理変更。
  結局64bit機でSendInputの処理が怪しそうだったのでmouse_eventやkeybd_eventへ戻す。
  マウスモード時、スペースキーの長押し&マウス移動キーに触れない状態維持でキーボードモードへの切り替え
  手法へ変更。これにより最初からスペースキー入力も行える。
  右クリック用セミコロンも同様に長押しで対応可能。
  「U」「I」「O」に加えて「A」「E」のすべての母音を「一呼吸」後の2キーまでの
      「離したら」キー入力該当キーに設定。
  またこれらのキーをマウスモードからキーボードモードに切り替えるために使用すると
  2文字入力されてしまう問題に対処。
  ENTERキーはモード切替に反応しないように変更。
  モード切替時、マウスボタンはすべていったんアップされるよう内部処理変更。
  ここからは雑談。。。
  にしても、、、Windows10のEDGE、IE11、WinアプリのTwitteなどと愛称悪し。
  独自のキーフックしているような気がやはりする。
  日本語入力はおかしいので「H」と「L」で無効にして利用するしか手立てがない。
  MS IMEじゃないものにかえればよくなるのか、、、うむ。

2016/02/27 ビルドバージョン25.
  バージョン24までのWin10のEDGEやWinアプリ版TwitterなどでのIME使用時の挙動問題に対応!
  なんと、Winアプリ仕様の一部アプリケーションではキーを押したときの処理が認識できなかった。
  すべて離したときにだけイベントが発生する・・・
  これを逆手に取り、そういったWin10アプリ仕様ソフトでChiPointerがりようされているか否かを自動で判断し
  もしWinアプリ仕様ソフトでChiPointerが使用されている場合は、
  キーフックでの余計な処理を行わすWinに任せることに。
  従来のV17以前仕様ぐらいには使用できるのとIMEでの入力に違和感がないので普通に使える。
  ChiPointer全機能をWinアプリ仕様ソフトで使用したいときはIMEをOFFすれば自動で内部しょり復帰する。
  これで長時間の使用テストに耐えればほぼ動作は完成状態と考える。
  コンフィグとかそういったものを考えたくなってきた。
  にしても、、、解消してよかった。ふぅ。     
       
2016/03/02 ビルドバージョン26
      完全にIME ON時の入力違和感がなくなった。
なかなかここまでたどり着くのが大変だった。
バージョン25前までの処理から変更し、マウス移動キーHJKLの時のみ話すとキーインに変更。
その後リピートになるまでの間に他のキーが押された場合もしくは自分自身が離れた場合に
次のキー処理実行前にマウス移動キーの処理を実施。その後押されたキー処理を継続実施することで実現!

2016/03/04 ビルドバージョン27
  IME制御を取り入れる。
  マウスモードに切り替わる際にIME OFFを実施。
  これにより今までしらずしらずIME ONのままでマウス操作していると一部機能が働かなかったりする事象を
  根本的になくすことに成功。

2016/03/05 ビルドバージョン28
  EDGE/Win10アプリなどでIME ONのときマウスモードへの切り替えがうまくいかない状況を打破すべく
  独自アルゴリズムでそれらアプリを検知し、そこそこマウスモードへの切り替え+IME OFF実施ができるようになった。
  とはいえ、他のソフト上での動作と異なりマウス移動キーが一文字入ってしまう。
  それでもだいぶ以前よりまし。というか、かなり良くなったと思う。
  ・・・でもWin10のIE11だけはまったく対応できず。。。
      
2016/08/13 ビルドバージョン29
久々のアップデート。
Windows10 Anniversary UpdateによるWinストアアプリとの相性に挑戦。
とはいえ、フックができない以上Winアプリ上での動作は限定される。
今回のバージョンではWinストアアプリ上でキーボードを押すとマウスモードが解除される。
これによりWinストアアプリ上でのマウス移動がされながら文字入力がされてしまうという現象が回避される。
Winストアアプリは画面タッチと併用して使ってください。
Winデスクトップアプリに戻ったあとにそのまま継続でChiPointer機能は使えるので
どうしてもキーボードメインで使用したければAlt+Tabで画面切り替えて使用すればそこそこ使えます。      

      

最新版(v29)
Dropbox - ChiPointer.zip - Simplify your life

IME制御実装前最終バージョン(v26)
Dropbox - ChiPointer.v26.zip - Simplify your life

古いバージョン(v17)
※「一呼吸」機能実装前最終バージョン
Dropbox - ChiPointer.v17.zip - Simplify your life

注意!
v28以降でのWin10アプリやEDGE上でIME制御を聴かせるためにはWin10標準のMS IMEではだめです。
Google日本語入力だとそこそこ制御してくれますのでおすすめです。
今後ChiPointerはGoogle日本語入力環境ベースで対応の予定です。


使い方は簡単。
ChiPointer.exeを実行するだけです。

先人のKeyPointerを参考にしております。
このソフトを使ってその使い勝手に感動したからこそ作成するにいたったといっても過言ではありません。
KeyPointer - System I.F.C. Product Library
この場を借りて感謝いたします。

また、
キーフックを行う必要がありつーささんのサイト
http://tu3.jp/0524
のDLLを使用させていただいており、本ソフトに同梱しております。
この場を借りて感謝いたします。

とりあえず、使ってみてください。

記事に書くことをすっかり忘れ、このソフト開発に走ってしまいましたが
「UMIPI BASIC」が
2015 HSP プログラムコンテストにて
審査員奨励賞・悠黒賞
をいただくことができました!
HSPプログラムコンテスト2015 入賞作品詳細
今回の「ChiPointer」もHSP3製です。
ほんとうに素晴らしい開発環境をありがとうございます。
「ChiPointer」はT90chi用ですが、結局T90chiで開発しました(汗)
これからもいろいろソフト作るぞ!っと。

ではでは。
感想などお待ちしております。

OBSliveにてUMIPI BASICが紹介されました〜♪

USTREAMアーカイブはこちら
OBSLive 2015/11/28
※30分12秒ごろから「UMIPI BASIC」が紹介されます!

ゲストにあの3DS用BASICインタプリタを発売している
スマイルブーンの小林社長を迎え、
HSP プログラムコンテスト2015 の作品紹介が行われました。
我がUMIPI BASICも紹介されましたよ!
上記リンクのアーカイブ動画から30分12秒ごろから紹介されています。

小林社長から
「もうわけわからん」
「次はこれのコンテストですね・・・」

とか
おにたまさんから
「僕も驚きましたね」
というお褒めの言葉をいただけてうれしい限りでした。

そもそも、HSPでBASIC言語、BASICインタプリタを作ろうなんてふつう思わないですよね。
自分もHSP3Dishがあるからこそ作ってみよう!とおもったわけであって
HSPというすばらしいプログラム開発環境がWindowsにあるにもかかわらず
そこで動くBASICインタプリタを作っても意味はないということはわかっていました。
しかし、
HSP3dishを知ってからは
「いずれBASICインタプリタスマホで動かせるようにしたい!」
「「ポケコンでさっとプログラムして、さっと楽しむ。複雑すぎないプログラムであそぶ!」これをスマホで実現できるかもしれない!」
という思いが強まっていました。
実際には1年前に一度挑戦したのですが、、、
四則計算プログラムのところで挫折により先に進めず。。。
ところがどっこい、
今年の5月末ぐらいに再チャレンジしてみると・・・(あっさりではなかったですが、、、)
壁を乗り越えることができ、計算ができるようになり、
コマンド実装ができるようになり・・・となり
それと並行してドットマトリックスVRAMエンジンを検証、何度かの手法を試し
高速化を図り現在の形に近いものを実装して
ポケコン風なUMIPI BASICができてきました。
まだまだ開発途中で、しかも今はガンダム バルバトス作成中なのでプログラムやってませんが(汗)
気長に改廃して自分の理想の簡易プログラム環境をスマホ上に展開したいなと思ってます。

BASICは小学5年の時に父の上司の方から父への見舞の際に持ってきた
CASIO PB-200からはじまったものでした。
実際にBASICプログラムに関心が出て、組めるようになったのは6年生のとき。
本屋でマイコンBASICマガジンとの出会いが始まりでした。
PB-200の説明書にあったサンプルプログラムは面白いものは特になく、
ルーレットのようなものはあったのですが、数字がちかちかするだけのもので
子供の自分をくぎ付けにする魅力はありませんでした。
しかし、
マイコンBASICマガジンベーマガの投稿作品のそれらは全然違っていました。
「4」「6」キーなどで左右にリアルタイムにキャラクタを動かすことができ
時には剣、時にはミサイルで敵をやっつけるようなリアルタイム性のあるゲームが
活き活きと小さなその筐体の画面で動き回ったではありませんか!
「PCG」とか「フェアリーランド」なんか忘れられません。
翌月からベーマガは毎号買っては打ち込み、ちょっといじったりしてBASICを覚えていったものです。
その後紆余曲折あり、高校時代にポケコン作品としては96年6月号に
現在のWebネーム同様UMIPIで「TOP BURNER」という作品でSHARP PC-E500用ゲームを掲載していただいています。
あの頃の1本のゲームの開発時間って数時間から数日だったと思うんです。
そんな環境がいまあるのか?
なにかさっと試したいときに手元でなにかできるものってあるのか?
って考えたときにプチコン、、、という選択肢も無論あったわけですが(汗)
イカラすぎる(古)その多色に扱えることや
機能の多さというのが逆にハードルになると考え
UMIPI BASICはモノクロで多少諧調表現もできる画面と
8x8ドットを基本としたキャラクタパターンでの文字表現を行い
さらにはそのコードを書き換えることが可能なPCG機能を入れることで
簡単にグラフィックが扱える、まさにPC-E500やMSX的なホビーユースな簡易プログラム言語を目指し開発しました。
今後も色が増えたり、目新しいことはないと思うのですが
高速化や見た目の改善(今ダサすぎるのは十分わかってます(汗)など
いろいろ行ってゆきたいと思ってますので、
使ってくださっている方、いるのかわかりませんが(汗)
気長にお付き合いのほどよろしくお願いいたします。

そんななか、、、
いよいよ12/1に最終審査となりますが・・・はたして?
結果はどうあれ、楽しみです!

UMIPI BASIC Ver.0.4 Build 68

昨夜対応した変則物理キーの情報について
マニュアルに記述しました。

抜粋するとこんな感じ・・・

・物理キーについて
 Windows版のみ物理キーボードからの入力が行えます。
 ただし、変則的なためそれほど入力が便利になるわけではありません。
 アルファベット、スペース、数値に関してはキーボードどのままの入力が行えます。
 記号も!"#$%&'()にかんしてはそのまま入力できます。
 それ以外の記号についてはかなり変則的です。
 下記にその対応表を記載します。
直接入力 SHIFT入力
BACK SPACE [BS]
TAB [:] [\]
RETURN [EXE]
CTRL [] []
ALT [] []
0 [0] [=]
ESC [CL]
← [] [-]
↑ [] [*]
→ [] [+]
↓ [] [/]
F1 [,] [.]
F2 [?] [|]
F3 [ ]
F4 [_] [@]
F5 [RUN]
F6 [>] [<]
F7 [:] [;]
F8 [^] [~]
F9 [{] [}]

・・・う〜ん、、、読めない(^^;
取説読んでね。

バイナリその他は
UMIPI BASIC 野良アプリ版公開開始! - UMIPIと小さなガジェットたち。。。
よりダウンロードよろしくです。
・・・にしても物理キー、もうちょっとなんとかならんかなぁ〜
getkeyの仕様だと認識できないキーが多い。。。

Windowsでの物理キーボードに変則対応です

Winのみですが物理キーボード対応です。
そのほか・・・

Ver0.4 build 67
・Winのみ物理キーボードに対応(ただし超変則的)
 →キーマトリクスは本手順書に後ほど反映予定
 →これによりVerを0.1アップ。Ver0.4とする。Build番号は継続。
・ソフトウェアキーボードに「\」がないのを修正
・変数添え字オーバ時の処理追加
・WIDTHに10x5、30x7モード追加(低速マシン配慮だが、、、うむ)

物理キー対応はかなり変則的です。
カーソル↓で「/」とか
F1で「,」とか、、、
本当はそうしたくないんですけど、、、今のところそうせざるを得ない。
ごめんちゃい。
またこれによりAndroidでは遅くなったかも。。。
ほんとうにAndroidで物理キーだめか確認したら処理考えます。

下記からWin版、Android版ダウンロード可能です。
UMIPI BASIC 野良アプリ版公開開始! - UMIPIと小さなガジェットたち。。。

コンテスト版はマニュアルに変則キーボード情報を正しく書き込んだらアップする予定です。

現状書く暇がないのでプログラムから直抜粋(汗)

;Back Space
strKeyInput@="BS"
break
case 9
;TAB
;「:」とする
strKeyInput@="\\"
;※TABキーはSHIFT併用できぬようだ。。。というか、、、タッチキーボードに「\」がないことに気付く。
break

case 13
;EXE
strKeyInput@="EXE"
break

case 16
;SHIFTキー
intSHIFT=1
swbreak

case 17
;CTRLキー
;Aボタンとする
strKeyInput@=""
;SHIFTと併用でXボタンとする
if intSHIFT=1 : strKeyInput@=""
break

case 18
;CTRLキー
;Bボタンとする
strKeyInput@=""
;SHIFTと併用でYボタンとする
if intSHIFT=1 : strKeyInput@=""
break

case 48
;0キー
strKeyInput@="0"
;SHIFTと併用でYボタンとする
if intSHIFT=1 : strKeyInput@="="
break

case 27
;ESCキー
;CLSキーとする
strKeyInput@="CL"
break

case 37
;←
strKeyInput@=""
;SHIFTと併用で「-」ボタンとする
if intSHIFT=1 : strKeyInput@="-"
break
case 38
;↑
strKeyInput@=""
;SHIFTと併用で「*」ボタンとする
if intSHIFT=1 : strKeyInput@="*"
break
case 39
;→
strKeyInput@=""
;SHIFTと併用で「+」ボタンとする
if intSHIFT=1 : strKeyInput@="+"
break
case 40
;↓
strKeyInput@=""
;SHIFTと併用で「/」ボタンとする
if intSHIFT=1 : strKeyInput@="/"
break

case 112
;F1
strKeyInput@=","
;SHIFTと併用で「.」ボタンとする
if intSHIFT=1 : strKeyInput@="."
break

case 113
;F2
strKeyInput@="?"
;SHIFTと併用で「|」ボタンとする
if intSHIFT=1 : strKeyInput@="|"
break

case 114
;F3
strKeyInput@="["
;SHIFTと併用で「]」ボタンとする
if intSHIFT=1 : strKeyInput@="]"
break

case 115
;F4
strKeyInput@="_"
;SHIFTと併用で「@」ボタンとする
if intSHIFT=1 : strKeyInput@="@"
break

case 116
;F5
strKeyInput@="RUN"
break

case 117
;F6
strKeyInput@=">"
;SHIFTと併用で「<」ボタンとする
if intSHIFT=1 : strKeyInput@="<"
break

case 118
;F7
strKeyInput@=":"
;SHIFTと併用で「;」ボタンとする
if intSHIFT=1 : strKeyInput@=";"
break

case 119
;F8
strKeyInput@="^"
;SHIFTと併用で「~」ボタンとする
if intSHIFT=1 : strKeyInput@="~"
break

case 120
;F9
strKeyInput@="{"
;SHIFTと併用で「}」ボタンとする
if intSHIFT=1 : strKeyInput@="}"
break

だめだ、、読みにくいですね。
あとでやっぱり整理します。
お待ちを。。。。

内部処理の軽減を行ったけど・・・

シューティングサンプル作成中に・・・


おっそい。めっちゃおっそい。。。というのがわかってきたので
何とか処理の軽減をさせようとUMIPI BASICソースとにらめっこ。
う〜ん、、汚いソースだ(汗)
とはいえ、多少下記の点で改善させる。

  • 2015/10/09

Ver0.3 build 66
・GOTO/GOSUB内部処理見直しで処理軽減。
・VRAM描画処理部分内部処理見直し軽減
・・・とはいってもほとんど処理速度変わらず。。。もっと早くしたい、、、無理そう。。。

でもわかるほどの処理高速化にはつながらず。
自分のGALAXY S4 Android 5.0.1が遅いんでしょ。っとあきらめる(汗)
まだサンプルは完成しないぞ!(爆)
あ、build 66ダウンロードはいつもの記事からどうぞ。

UMIPI BASIC 野良アプリ版公開開始! - UMIPIと小さなガジェットたち。。。