rcmdnk's blog

yamy_200_200

Windowsでのキーボードショートカットやキーの設定変更についてです。

キーボードショートカットとしては、 最初は最低限C-cC-vでコピペ、等覚えて行くと思いますが、 そのうちマウスを使うのが煩わしくて出来るだけキーボードだけを使って作業したくなっていきます。

Windowsのキーボードショートカット のページを見ても、物凄い量のショートカットキーがあって、 正直全部知っているわけではないのですが、 デフォルトのショートカットキーだけではどうしても出来ないこともあります。

さらに、MacやLinuxを使っていると、こっちでは使えるショートカットがこっちでは使えない、 もしくは違うキーとして使用されている、などということもあり、 慣れてるショートカットで統一したい、と言うこともあります。

そこで、Windowsでは Yet Another Mado tsukai no Yuutsu (yamy)と言うソフトを 使ってキーバインドを変更しています。

Windows用ソフトウェアのページで紹介している様に、 他にも似たようなソフトや、GUIで出来る物もありますので、 簡単にやりたい場合はGUIで出来るものを使うとすぐにキーバインドを変えたり出来るかと思います。

yamyのインストール、セットアップ

インストールはyamyページからzipをダウンロードして 展開して適当な場所に配置するだけです。

CapsLock等、NLSキーを使いたい場合はreadme.txtにあるように、 yamyフォルダにあるyamy.iniの中のescapeNLSKeysの値を1にします 1

escapeNLSKeys=1 ; 1:enable 0:disable

スタートアップ時に起動させたい場合はVistaまでであればスタートアップフォルダに yamy.exeのショートカットを入れるだけで良いのですが、 Windows 7でescapeNLSKeys=1にした場合、 「管理者として実行」する必要があり、 これをスタートアップ時に行うにはスタートアップフォルダを使っった方法ではなく タスクスケジューラーで起動させる必要があります 2

  • タスクスケジューラー(アクセサリ->システムツール)->タスクの作成
    • 全般タブにて
      • 名前: yamy
      • ユーザーがログオンしている時のみに実行する
      • 最上位の特権で実行する、にチェック
    • トリガータブにて
      • 新規->タスクの開始を「ログオン時」へ
      • 任意のユーザーで自分だけにしておく
    • 操作タブにて
      • 新規->操作:プログラムの開始->プログラム/スクリプトにyamy.exe
    • 条件タブ
      • 電源の欄で、コンピューターをAC電源で使用している場合のみ…のチェックを外す
    • 設定タブ
      • タスクを要求時に実行する、終了しない場合強制的に停止する、だけにチェック
      • タスクを停止するまでの時間、にチェックがついてたら外す

Ref:管理者権限が必要な常駐アプリはタスクスケジューラでスタートアップさせる

設定ファイル

yamyフォルダにいくつか*.mayuといったファイルがありますが、 これらがキーの指定をしたりしている設定ファイルです。

詳しい設定方法などはyamyの前身の 窓使いの憂鬱のマニュアル を参照して下さい。

注意が必要なのは、窓使いの憂鬱の時は設定ファイルが最初に読み込まれるファイルと 同じフォルダにある様にキーボードの設定ファイル(104.mayu)などを置くべきでしたが、 yamyだと、最初に読み込む設定ファイル以外は全て実行ファイルyamy.exeと同じ フォルダにある必要があります(試した限りでは)。

最初に読み込む設定ファイルに関してはどこに置いてあっても大丈夫なようです。

基本的な設定

自分用の設定ファイルを作っていきます。

### 他ファイルの読み込み 一番最初に、まず、キーボードの定義ファイルを読み込みます。 ファイルを読み込むのはinclude ファイル名とするだけです。

include "104.mayu" # US Keyboard
#include "109.mayu" # Japanese Keyboard

自分の使っているキーボードの方をincludeして下さい。

ちなみに、上にあるように、shやpythonの様に#を使うとそれ以降はコメントになります。

もしくは、

include "dot.mayu"

を読み込みます。中身は

if ( USE104 )
  include "104.mayu"        # 104 キーボード設定
  if ( USE109on104 )
    include "109on104.mayu" # 104 キーボードを 109 キーボード風に
  endif
else
  include "109.mayu"        # 109 キーボード設定
...

となっていて、USE104等のパラメータによって選ぶキーボードを決めています。 このパラメーターは下でメインの設定ファイルを決める時に決めます。

keymap

yamyではkeymap の指定を使って適用されるスコープを設定します。 keymap Global Globalは全ての場合で有効にするので、取り敢えず最初に書いておきます。 keymapはそれが書かれた行以降、次にkeymapの定義が出てくるまで適用されます。

キー割り当て

キーの割り当て

key a = b

の様に行うことで、aを押した時にbを押したのと同じことになります。

動かしてみる

a_to_b.mayu
1
2
3
include "104.mayu"
keymap Global
key a = b

という内容のファイルを作り、読み込んで試してみます。

yamy.exeを起動させると(Windows 7等では右クリックから管理者として実行)、

すると、タスクバーにyamyのアイコンが出るので、右クリックから設定を選びます。

yamy0

さらに出てきたウィンドウから追加を選択。

yamy1

そうすると、次の様なウィンドウが出ます。

yamy2

まず、名前を適当に入力し、先ほど作ったファイルを選択します。

yamy3

一番下のシンボルが、先ほどのdot.mayuの中で分岐用に使われていたシンボルになります。 -Dを除いた部分がシンボルとして使われ、;で繋げて書くことで複数のシンボルを指定することができます。

上でdot.mayuを選択した場合、USキーボードを使っている場合は -DUSE104を必ず指定してください。 デフォルトでは109キーボードの設定が読み込まれます。

設定が終わったら、メモ帳でも何でもいいので、aを記入しようとしてみれば、 bが記入されるかと思います。

このキーマップの右辺には複数のキーやコマンドを加える事も可能で、それぞれスペースで区切り 記述します。

key a = S-h e l l o w Space S-w o r l d $EXCLAMATION_MARK Enter

とすれば、aを押しただけでHellow Worldと記入されて改行されます。 補足すると、

  • S-hShiftを押しながらhを押す
  • 各キーにおいて、大文字、小文字の区別はされません。 (key a = Bとしてもkey A = bとしても同じようにaを押したらbになります。
  • Space/Enterの様に、どのような記号がどのような名前で使えるかは 104.mayu109.mayuを参照して下さい(def keyのライン)。
  • $で始まる物はキーシーケンスで、 特定のキー入力に名前を付けたものです。
    • !に関してはUS/日本語キーボード共にShift+1なので、S-_1と書いても入力出来ますが (数字は全て”_+数字”と定義されています)、@はUSではS-_2、日本語では そのままキーがあるのでCommercialAt_Atmarkとして定義されています。 これらに対して、キーシーケンス$COMMERCIAL_ATがそれぞれで定義されているので、 どちらの場合でも$COMMERCIAL_ATを使うことで@を出力させることができます。
  • また、複数の割り当てが同じキーに対して行われた場合、下に書いてある方が優先されます。

これを使えば、例えば

key A-C-h = Left
key A-C-j = Down
key A-C-k = Up
key A-C-l = Right

という設定をすると、Alt+Ctrlを押した状態で、vimライクに hjklを使って上下左右に

Sponsored Links
  1. CapsLock等、NLSキーを使おうとした場合 素直にキーバインドをすると、 CapsLock<->Controlの交換をした場合、Controlが押しっぱなしになったりします。

  2. escapeNLSKeys=1にした状態で普通に立ち上げると NLSキーのエスケープに失敗しました(エラーコード=1026) と言ったエラーが出て立ちあげられません。

Sponsored Links

« Octopressのページの作成 yamyを使ったWindowsでのキーバインドの変更 2: モディファイヤを用いたキー割り当てとモディファイヤの変更 »

}