「Surface RT」を使いやすくしてみた
「Surface RT」を入手して数日経つが、当初の購入目的だった打ち合わせ時のメモ作成といった用途に用いる場面も出くわすこともない。そのため、設定変更や使い勝手の良いWindowsストアアプリはないか、と日々カスタマイズに取り組んでいる。そこで筆者が行ったいくつかのカスタマイズをここで紹介しよう。Surface RTを仕事やプライベートで活用している方の一助になれば幸いだ。
一歩先の未来を具現化した「Surface RT」 - 前編
スクリーンショット作成時のキーを変更する
まずはスクリーンショット(画面キャプチャー)の作成に関するカスタマイズを紹介しよう。Windows 8には、[Win]+[PrtScreen]キーによるスクリーンショットの撮影、およびPNG形式ファイルの作成機能が備わっている。しかし、タッチカバーには[PrtScreen]キーが用意されていないため、スクリーンショットの作成は「Windows」ボタンと本体左側にある「音量ダウン」ボタンを同時に押さなければならない。筆者が不器用なのかタイミングをつかみ切れていないのか不明だが、これがとにかく使いにくい。
何度か試すとスクリーンショットファイルを作成できるのだが、PNG形式ファイルにはボリューム変更の画面が含まれてしまい、結局は取り直しになってしまう。そのため、現在はUSBキーボードをSurface RTに取り付けてスクリーンショットファイルの作成を行っているものの、タッチカバーが備わっている環境で別途キーボードを用意するのも面白くない。多くのユーザーにはどうでもよい話に見えるかと思うが、筆者のようにコンピューターの解説を主として書いているライターには大事なことこの上ないのだ。
そこで思いつくのがキーボードレイアウトをレジストリで変種する方法。幸いにもタッチカバーには、ほとんど使用しない[Caps(Lock)]キーがある。本当はファンクションキーの代わりに並んでいる特殊キー(もしくはチャームキーとでもいうべきか?)を変更したかったのだが、Windows RTでキーマップを調べる方法を見つけられなかったので、今回は[Caps]キーを使うことにした。
そもそもWindows OSでは、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\KeyBoard Layoutキーにバイナリ値「Scancode Map」を追加することで、キーボードレイアウトをカスタマイズすることが可能だ。サインインするユーザーのみカスタマイズする場合は、HKEY_CURRENT_USER\KeyBoard Layoutキーに同エントリを作成することで対応可能だが、今回検証したところ正しく動作しなかったため、前者を用いることにした。
このエントリの内容は図01のとおりだ。最初に8バイト+8バイトのヘッダを作成し、次に末尾のNULLを含めたDWORD値の個数を記述。今回のように一カ所だけ変更する場合は「02 00 00 00」となる。ここからが本番だ。送信するキーコードの4バイト、続いて入力するキーコードの4バイトを続けて入力する(図01)。
今回は[Caps]キーを[PrtScreen]キーに置き換えるが、各キーコードは「0x003A」「0xE037」だ。ただし、ここで入力する値はリトルエンディアンとなるため、キーコードの前半部と後半部を入れ替えなければならない。これらを踏まえるとバイナリ値「Scancode Map」の値は「0000 0000 0000 0000 0200 0000 37E0 3A00 0000 0000」となる(図02~08)。
図04 KeyBoard Layoutキーを開き、右ペインの何もないところを長押し。メニューから<新規>→<バイナリ値>とタップする |
図05 値名を「新しい値 #1」から「Scancode Map」に変更する |
図06 バイナリ値「Scancode Map」をダブルタップし、値のデータを「0000 0000 0000 0000 0200 0000 37E0 3A00 0000 0000」に変更して<OK>ボタンをタップする |
図07 操作を終えたら<×>ボタンをクリックしてレジストリエディターを終了させる |
この設定を行えば[Win]+[Caps]キーでスクリーンショットファイルを作成可能になるため、タッチカバーだけの環境でも心置きなく検証やスクリーンショットファイル作成が可能になる。なお、スクリーンショットファイルとは関係なく、単に[Caps]キーを[Ctrl]キーにしたい場合は値を「0000 0000 0000 0000 0200 0000 1D00 3A00 0000 0000」、単純に[Caps]キーを無効にする場合は「0x0000」を送信するキーコードとして与えるので、値を「0000 0000 0000 0000 0200 0000 0000 3A00 0000 0000」とすればよい。