Escとファンクションキーだけのスクリーンキーボードを作ってみた

 WindowsタブレットとBluetoothキーボードでミニノートPC に擬装する方法

昨年末に Windows8.1 タブレットを購入しました。 BayTrail-T の安い 7.9 インチの中華タブレット Teclast X89Win です。一緒に Bluetooth キーボード型ケース HB045 も購入し、装着して小さなクラムシェル型ノート PC (しかも英語配列!) として使うことを目論んでいましたが、大きな落とし穴がありました。

このキーボード、Esc やファンクションキーがありません。他の Bluetooth キーボードのように Fn キーを押しながら最上列の数字キーを押すと入力できるだろう…とタカをくくっていたら明るさ・ブラウザ・検索等が割り当ててありました。よく確認しなかった自分が悪いのですが orz もともとは iOS/Android 用でしょうから Esc やファンクションキーはまず使わないんでしょうね…。こちらとしては、ファンクションキーは VisualStudio 等の IDE のデバッグ実行で必要なため、結局このキーボードはお蔵入りとし、ただのタブレットとして使っていました。

一方、Windows8.1 にはスクリーンキーボード(Soft Input Panel と言うらしい)が内蔵されていて、設定によりフルキーボードを出すこともできます。これはこれでなかなか使いやすくて重宝していました。タッチ操作であるが故に画面内の一部が覆い隠されてしまう事だけが唯一残念な点。そんな中、これをカスタマイズして ↑ のキーボードに欠けているキーだけを出すようにできれば幸せになれるのでは…と気づいてカスタマイズの方法を探っていましたが、どうやらなさそうです。そして次に思いついたのがスクリーンキーボードの自作でした。

ということでインストールしたばかりの VisualStudio2015 を使い、WPF でせこせこと書いてみました。せっかくなのでソースコードごと github で晒しておきます。

  • ScreenKeyboardEscFn (ソースコード、VisualStudio2015 Community 用)
  • ScreenKeyboardEscFn-bin-20150910.zip (実行ファイル、 .NET Framework 4.5 以降)

参考にしたのはこちらの記事で公開されていたソースコードです。とりあえず押されたボタンに応じて keybd_event() を飛ばすだけです。また、キーボードのウィンドウを消してもタスクトレイのアイコンから再表示できます。終了したい場合は同じくタスクトレイのアイコンのメニューから選んでください。

スクリーンキーボード

…ちなみに実用性はこれから確認します(汗)。

文責:ともたこ/Tomotaka Ogino Twitter/github/Qiita