パスワードを忘れた? アカウント作成
12229802 journal
日記

numaの日記: キーボード配列の設定変更(続き) 2

日記 by numa

以前、英語キーボードでCapsLockキーにCtrlキーの機能を割り当てた。今回はその続きとなる。

いま使っているキーボードはカーソルキーが逆T字型に配列されたもので、上矢印キー(↑)の左右にPgUp/PgDnキーが配置されている。ありがちなことだが、この配置だと、左右矢印キーと間違えてPgUp/PgDnキーを押してしまう。そうすると、カーソルを左右に動かすだけのつもりなのに、それが1ページ分上下に動いてしまい、大慌てすることとなる。そこで、その対策を講じてみた。

さて、キー割当てを変更したいという要求はよくあることで、そのためのツールも多数公開されている。PgUp/PgDnを無効にしたり、左右矢印キー(Left/Right)の機能を割り当てたりするだけならば、どれでも好きなツールを使えばよい(なんなら、レジストリを直接変更してもよい)。しかし、それではPgUp/PgDnに相当するキーがなくなってしまう。キー操作でその機能は利用したいのだ。ただ、そのキーを使うのを避けたいだけのことで。

そこで、次のようなキー割当てを実現することを目的として、ツールを探してみた。

  • PgUpに左矢印(Left)機能を、PgDnに右矢印(Right)機能を、それぞれ割り当てる。
  • Ctrl+PgUpにPgUp機能を、Ctrl+PgDnにPgDn機能を、それぞれ割り当てる。
  • Ctrl+UpにHome機能を、Ctrl+DownにEnd機能を、それぞれ割り当てる。Home/Endキーは存在するが、カーソル操作キーからは遠く、不便なのだ。
  • PrtSc (Print Screen)にAppsキー(右クリックメニューを呼び出すキー)を割り当てる。現状ではAppsキーは存在せず、右Altと右Ctrlの間にPrtScキーがある(他のキーボードなら右Alt、右Windows、Apps、右Ctrlの順に並んでいるところ。)。メーカーの考えでは、Appsキーはなくてもいいが、PrtScキーは欲しいということらしい。しかし、どちらかというとAppsキーの方を使いたいので、ここで割当てを変更する。
  • PrtScも、ごくたまに使いたくなる可能性もあるので、Ctrl+PrtScにその機能を割り当てる。

ShiftやCtrlの状態を含めたキー割当てを行う場合、レジストリ変更では済まず、常駐プログラムの厄介になる。そこで、AutoHotkeyを使うことにした。これは、機能は豊富だが、その分とっつきが悪い。GUIでボタンをいくつか押しておしまい、ではなく、定義ファイルを書く必要があるからだ。その代り、プログラムで細かい制御ができる。

さて、AutoHotkeyで最初に書いた定義ファイルは次の通り。

^PgUp::PgUp
^PgDn::PgDn
PgUp::Left
PgDn::Right
^Up::Home
^Down::End
^PrintScreen::PrintScreen
PrintScreen::AppsKey

ただし、“a::b”という表記は“aキーをbで置き換える”という意味で、“^X”はCtrlキーとXキーを同時に押すという意味である。やってみた結果、PrintScreenはうまくいったが、その他のカーソル制御関係は、編集モード時にうまくいかない。Ctrl+PgUpでは何も起きないし、Ctrl+Upで行の先頭にカーソル移動してほしいところが、バッファの先頭に移動したりする。そこで方針を変えてみた。

PgUp::Send {Left}
PgDn::Send {Right}
^PgUp::Send {PgUp}
^PgDn::Send {PgDn}
^Up::Send {Home}
^Down::Send {End}
PrintScreen::Send {AppsKey}
^PrintScreen::Send {PrintScreen}

ただし、“Send {キー名}”は、“キー名”で示されるキーが押されたという信号を送る命令である。こちらではうまくいった。なぜそうなったか、原因は調査中。

これで、取りあえずの要求は満足できた。AutoHotkeyはなかなか面白そうなので、しばらく遊んでみようと思う。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...