- 作品名:
- 「
理想十鍵 」 - 作者名:
- はりまお
- 制作環境:
- Core i7-4770 3.40GHz + 8GB RAM
- Windows 10 Pro (64bit)
- 開発言語:
- Visual Studio Express 2013 for Windows Desktop (Visual Basic 2013)
- 動作環境:
- .NET Framework 4.5
- 形態種別:
- フリーソフトウェア(オープンソース)
名前 | バージョン | 概容 |
---|---|---|
Ideal10Key.exe | 1.4.0.3 | 実行ファイル |
PadKey_Sheet0.txt | パッドキー定義ファイル | |
PadKey_Sheet1.txt | ||
PadKey_Sheet2.txt | ||
PadKey_Sheet3.txt | ||
readme.txt | 説明文(本文と同じ) | |
Ideal10Key | ソース収録フォルダ(不要なら削除可) |
本作を一言でいえば、『文字を切り替えられる仮想テンキー』です。もちろん、切り替えるキーは変更できます。
「テンキーをこんな風にして欲しい」と誰かに伝えるために(そんな力も人脈もないので絵に描いた餅ですが)、そのイメージをソフトウェア上で再現した実験的プログラムです。
というわけで、“ソフトウェアキーボード”であってキーボードカスタマイズソフトではありませんので、お間違いのないように。実際のテンキーを使って入力することはできませんが、その雰囲気は伝わると思います。
本作の使用には、『.NET Framework 4.5』をあらかじめ導入しておく必要があります。.NET Frameworkの導入方法は、OSによって異なるのでネットで調べてください。
インストールは、ダウンロードした圧縮ファイルの中身を、適当な場所に作成したフォルダに解凍してください。
パッドキー定義ファイルは、必ず実行ファイルと同じフォルダに置いてください。
アンインストールは、解凍先のフォルダをまるごと削除するだけです。このプログラムは、レジストリにも記憶媒体にも一切手を出してません。
起動は、"Ideal10Key.exe"を実行するだけです。
本作は、コマンドライン引数によって起動時の設定を行えます。設定の保存機能の代わりに使ってください。使い方は、実行ファイルのショートカットを作ってその“リンク先”の末尾に下記の引数を書き加えるだけです。大文字・小文字や順序は問いません。
引数名 | 値 | 初期値 | 意味 |
---|---|---|---|
/HO | --- | --- | 手動伸縮にする。 |
/NA | --- | --- | Altキーを送信しない。 |
/UD= | 1 ~ 使用画面数 | 1 | 使用するディスプレイの番号をしてする。 |
/OP= | 0.1 ~ 0.9 | 0.5 | ウィンドウの不透明度を指定する。 数値の前に"+"を付けると透過した状態で起動します。 |
/LB | --- | --- | 画面左下に表示する。 |
起動すると、画面右下に小さくアイコンが表示されます。
画面右下に置かれたアイコンにマウスポインタを近づけるとウィンドウが広がり、入力できるようになります。
テンキーに似た“パッドキー”(00~16)をクリックすれば、アクティブになっているウィンドウにその文字が入力されます。
パッドキーの左下に並ぶ“スイッチキー”(S1~S3)をクリックすれば、パッドキーの割り当てを切り替えられます。
また、スイッチキーからパッドキーへドラッグ&ドロップを行うことで、その1回だけ切り替えた文字を入力することができます。
スイッチキーの代わりに、Shift,Ctrl,Altキーを使うこともでき、それぞれのキーを押している間だけ、パッドキーが切り替わります。この場合、キーを押している間は送信する文字を溜めておき、キーを放した時にまとめて送信されます。これは、ショートカットキーとして認識されてしまうのを避けるためです。Altキーは、単独でメニューバーにフォーカスを移す機能を持っているため、入力内容を送信する前にAltキーを送信します。
一括送信するために溜められた入力内容は、パッドキー上側で確認でき、 ボタンで前回の入力内容を取り消したり、 ボタンで全て取り消したりもできます。
左上のアイコンを右クリックすれば、メニューが開きます。
メニュー | 解説 | ||
---|---|---|---|
![]() | 手動伸縮 | ウィンドウの伸縮をアイコンのクリックで行うかを選択します。 | |
[Alt]キー送信 | Altキー解放後にAltを送信してメニューバーからフォーカスを奪い返すかを選択します。 | ||
半透明 | ウィンドウを半透明にするかを選択します。 | ||
ディスプレイ | 使用するディスプレイを選択します。 | ウィンドウが伸縮するときに適用されます。 | |
左/右 | スナップ位置を画面左下と右下で切り替えます。 | ||
バージョン情報 | バージョンを確認できます。 | ||
終了 | 理想十鍵を終了します。 |
パッドキーに割り当てる文字の指定(“キーシート”と呼ぶ)は、キースイッチ毎のテキストファイル(UTF-8)に記述し、実行ファイルと同じフォルダに置きます。
キーシート0がない場合は、起動できません。キーシート1~3がない場合は、対応するスイッチキーが無効になります。
余談ですが、今回収録しているキーシート2と3は、別段考えのある配置ではありません。シート2は、Num Lockを削除した代わりとして。シート3は、キーボード上段辺りの記号を並べただけです。個人的には、シート1で事足りてしまったので。
全く難しい部分はないと思います。好きなように改造してください。
.NETの《SendKeys.Send()》ではカレット("^")が送信できない不具合があるため、WSH側の《SendKeys()》を使用しています。
ちなみに、.NETの不具合を具体的に書くと、《SendKeys.Send("{^}")》を実行すると"&"が表示されます。
これは、.NETさんは「"^"は英語キーボードでShift+6だよね」と解釈して送信 → それを受信したOSさんは「Shift+6は日本語キーボードで"&"だね」と理解するという、カルチャーショックな現象なんだそうです。昔から存在する問題で、WSHなら正常に意思疎通できているところを見ると、技術的な問題ではなくてMicrosoftの.NET担当者にこの2者を取り持とうという気などさらさらないというだけのようです。
Altキーは、単体でメニューバーにフォーカスを移す機能を持っています。そのため、スイッチキーの代りにAltキーを使用してパッドキーを入力し、その後Altキーを解放した場合、メニューバーが選択されてしまい文字入力ができません。
そこで、Altキー解放と同時にAltを送信し、フォーカスを奪い返すようにしています。しかし、これで万事上手く行くのか自信がなかったので、この機能の有効/無効を切り替えられるようにしています。
今回採用するキー配置について、タイプAにするかタイプBにするか迷いました。
この二つの違いは、スイッチキー1(S1)をパッドキーの下に押し込むかどうかなのですが、個人的にはシート1が重要なので、スイッチキー1を押しながらパッドキーを押し易いであろうタイプAを選択しました。しかし、現実のキーボードの形状を大きく変えることなく収められるタイプBも捨てがたいと思います。
タイプA | タイプB |
---|---|
![]() |
![]() |
Windows XPから8.1へ移行して、エキスプローラに表示されるアイコンの寸法が大きくなったので、調子に乗って256*256ドットの画像を用意してアイコンを作成したところ、ファイルサイズが激増してしまった。
使用している画像が異なるので厳密な比較ではないけど、それにしてもアイコンが実行ファイル要領に与えるインパクトがこれほど大きいとは驚いた。
画像サイズ | 色数 | アイコン容量 | 作成方法 | |
---|---|---|---|---|
以前 | 16*16 32*32 | 4ビット色 | 1.05KB | アイコン作成ソフトで直接描画 |
今回 | 16*16 (277バイト) 32*32 (454バイト) 256*256 (39,398バイト) | 32ビット色 | 269.00KB | PNG画像を「@icon変換」で変換 |
参考 | 16*16 (277バイト) 32*32 (454バイト) 48*48 (2,842バイト) | 32ビット色 | 14.70KB |
アイコン画像だけにとどまらず実行ファイルの容量に与える影響も大きい。理想十鍵プログラムの実質的な部分は50KB程度だと思うんだけど、256*256ドットを加えただけで+500KB近く増加するなんて…。あれ、50KB+269KB=577KB…何がどうなっているんだか???
「世間一般に公開されているフリーソフトの容量はなぜあんなに大きいのか?」と疑問に思っていたけど、それは“真っ当なアイコンを付けているから”というのもあったのかと(もちろんプログラムの質というのもあるでしょう)、また一つ勉強しました。
実は、2007年に初代“理想十鍵”を創ったのですが、その時も.NETの《SendKeys.Send("^")》の問題にぶち当たってクリップボード経由でキーを送信してたり、キーの割り当てを変更できない仕様だったりと、自由度が低いわりにコードが複雑な何だかシックリこない出来で、Ver.1に昇格できずに半ばお蔵入りみたいな扱いになってた。
ところが、何かの拍子に『入力した内容を1手ずつ戻るには、スタックを使えば良いのか!』と気づいて、そしたら無性に“理想十鍵”を創り直したくなって作業を開始してみたら、案外普通な感じに仕上がったので、とりあえず完成ということになりました。制作過程でネットをあさっていたら、WHSでSend問題も解決できることが判明したし、万々歳。
MSXでBASICを覚え、X68kにあこがれ、仕方なしにPC-98を使っていたオールドタイプなパソコン野郎が、IBM-PC/AT互換機(Windows 3.1)を使うようになって頭の奥へ胸の奥へと抑え込んできたもの、それが、“テンキーに対する不満”。
もちろん、キーボードカスタマイズソフトやプログラマブルキーボードなんかも探したんやけど、思うようにいかなかったり、高価だったりで。
そんな中、2013年に発見したのが、サイズさんの「楽々キーボード3」という超お値打ちプログラマブルキーボード。買っちゃいました。今は、これで満足していたりします。なので、それほど理想十鍵の出番はなかったりします(酷い、酷過ぎるぅ~)。
キーボードカスタマイズソフトでは、『Keyboard Butler ~鍵盤の執事くん~』というのが使い易かったですよ。
本作では、マウス入力を前提とした実装となっているため、実際のキーボードとして体現する際は不要な機能が付いています。スイッチキーがトグルになっている必要もなければ、ドラッグ&ドロップなんて有り得ないし、修飾キーでスイッチキーが押せるのも仮に割り当てられているだけです。なので実キー使用時の一括送信も不要です。ただ単に、Shiftキーを押せばアルファベットの大文字と小文字が切り換えられるような感覚で動作をしてくれれば本望なんです(この動作イメージをマウス操作に置き換えたのが、ドラッグ&ドロップだったんです)。
もちろん、例えば“スイッチキーとパッドキーの同時押しで一時的な入力”、“スイッチキー単独でCaps Lockキーのようなトグル動作”をしてくれたら、なおさら便利でしょうけどね。でも、複雑な改良を要求しちゃって、キーボードのお値段が高くなってしまったら嫌なんで、そんな贅沢は言うまい(…妄想にも程がある)。
MSX第一号機となる三菱電機製“ML-8000”のオプションとして用意されていたテンキーには、なんと 0~9 の上に A~F のキーが存在したというではないか! その雄姿を見よ!! うゎ~眩しい。
マシン語を前提としていたためらしくピリオドがないのが玉に瑕だけど。
毎度、有難う御座います。大変お世話になりました。