ラベル AutoHotkey の投稿を表示しています。 すべての投稿を表示
ラベル AutoHotkey の投稿を表示しています。 すべての投稿を表示

2012年8月19日日曜日

AutoHotkey で矢印キーを特定のキーに割り当てる - 英語配列のキーボードで CERRY MINI の矢印キーの使い勝手を確かめたい

1. CHERRY MINI キーボードの矢印キーの配列

キーボードは Filco の Majestouch Tenkeyless 黒軸の英語配列を使っている。キーボードのUSB ケーブルが断線しかけているようで、接触が悪くなってきた。そのため、修理に出そうか、別のキーボードへ乗り換えようか検討中。気になるのは CHERRY MINI 。

Happy Hacking Keyboard のように高価でなく、Cherryスイッチが採用されており、コンパクトなところが良い。ただし、矢印キーが使いやすいのか疑問。

[ShopU] 英語キーボード CHERRY MINI RD (赤軸モデル) によると、

 

キーのレイアウトは英語配列で、キーの前側面に表記されている機能はFnキーとの同時押しで使用するようになっています。

恐らく、Fn キーを親指で押さえながら、矢印キーを操作すると思うが、押しづらくないだろうか?特に黒軸の場合、押下力が必要なので、親指がつってしまわないだろうか?

現在、使っている英語配列のキーボードで、CHERRY MINI の矢印キーの使い心地を確かめるために、AutoHotey を使い、キーマップを変更してみることにした。

Alt キーを Fn キーに見立て、Windows キーを左矢印、アプリケーションキーを下矢印、右コントロールキーを右矢印、右 Shift キーを上矢印に割り当てる。

 

2. AutoHotkey でキーマップを変更

  1. 予め、AutoHotkey Download より、AutoHotkey_L をインストールしておく。
  2. remap_arrowkey.ahk のリンク先を保存し、起動する。

使用してみた結果、右矢印を小指で操作するのが辛かった。 (+_+)

Happy Hacking Keyboard は、小指で Fn キーを押しながら、

; ? ‘ [

をダイヤモンドカーソルとして使う。慣れると、とても扱いやすい。CERRY MINI の矢印操作も、同じように慣れることができるのだろうか?

追記(2012/08/20): HOME, END キーを追加した。

ところで、CERRY MINI には、右 Alt がないので使うのはきついかな。

 

3. AutoHotkey のソースコードについて

remap_arrowkey.ahk のソースコードは jutememo's gist: 3391082 — Gist

を元に作成した。

アプリケーションキー

Windows キーの右横にあるキーは、マウスの右クリックと同じ動作をする。このキーの名称は、アプリケーションキーと呼ばれる。

AutoHotkey では、このキーを

APPSKEY

と表現する。

Send/SendRaw/SendInput/SendPlay/SendEvent: Send keys & clicks によると、

{AppsKey}  Windows App key (invokes the right-click or context menu)

2011年8月2日火曜日

AutoHotkey で Esc キーを別のキーに割り当てる - Ctrl + [ でエスケープキーを入力

1. エスケープキーを入力するための代替キーを設定する

入力や操作を取り消すために「エスケープキー」を使う。

エスケープキーは、キーボードの左上に位置する。ホームポジションから遠いため、押しにくい。(+_+)

そこで、エスケープキーを入力するために、別のキーを割り当てることにした。

 

2. Ctrl + [ で Esc を入力

では、どのようなキーを Esc に割り当てるのが適切だろう?

例えば、Emacs では、

C-[

を入力すると、エスケープキーが入力される。

10.14 Escape キーがない場合はどうしたらいいのですか? によると、

C-[ を代わりに使ってください。これは ESC と同じく ASCII コードの 27 を送信します。

vi でも同じ。

Escキーが遠い - このブログは証明できない。」によると、

Vimの悩ましき問題点といえば、Escキーが遠いことです。よく使うのに、遠い。

そこで、Ctrl+[を押すと、Escキーを押したことになるそうです。

そこで、Ctrl + [ を Esc キーに割り当てることにした。

 

3. AutoHotkey で キー入力の変更

予め、AutoHotkey Download より、AutoHotkey_L をインストールしておく。

エディタで、以下の内容を記述する。

^[::Send {Esc}

これをファイルに保存し、拡張子を .ahk として、適当に名前をつける。

後は、スタートアップに入れて、起動するようにした。

Esc キーを Ctrl + [ に変更したところ、思っていた以上に快適になった。

 

関連記事

参考サイト

2011年3月23日水曜日

AutoHotkey でWindows Live Writer にソースコードを貼り付ける (2) - リボンUIを採用したバージョンへの対応

1. Windows Live Writer 2011 にバージョンアップしたら、ソースコードを貼り付けるための AutoHothey のスクリプトが動かなくなった

ブログを書くための Windows Live Writer は、長らく過去のバージョンを利用してきた。リボンUI が採用される前のもの。

ブログにソースコードを載せる場合、google-code-prettify で色付けされるようにしている。このとき、AutoHotKey を利用して、Windows Live Writer にソースコードを貼り付ける処理を自動化した。

最近、Windows LiveWriter を、リボン UI を採用した、Windows Live Writer 2011 にバージョンアップした。その結果、上記スクリプトが正常に動かなくなったので、スクリプトを修正した。

 

2. 修正したスクリプトの起動と使い方

前提 : AutoHotkey ( Installer for AutoHotkey_L ) がインスールされていること。

  1. スクリプト pasteHTMLCode2Writer.ahk  をダウンロードした後、ダブルクリックして起動。
  2. タスクトレイに アイコン 081002-002 が表示される。

 

使い方
  1. Windows Live Writer で、予めソースコードを挿入したい位置にカーソルを移動。
  2. ソースコードが書かれている、アプリケーションのウィンドウをアクティブにし、対象のコードを選択。
  3. Ctrl + Shift + Q を押すと、選択したソースコードが Windows Live Writer に貼り付けられる。

 

3. スクリプトの実装

スクリプトの内容は、以下の通り。

^+Q::                      ; Ctrl + Shift + Q
Send ^c                   ; 対象のソースコードをコピー
Send !{Tab}               ; Alt + Tab でウィンドウを切り替える

; Windows Live Writer がアクティブになるのを待つ
SetTitleMatchMode, 2
WinWaitActive, Windows Live Writer, , 2

; クリップボードの内容を変更
clipboard = <pre class="prettyprint">%clipboard%</pre>

Send !+hvsh{Enter}		; Alt+h v s h Enter
return

( cf. jutememo's gist: 881589 — Gist )

以前のスクリプトは、コードを貼り付ける処理において、Sleep コマンドを利用せざる負えなかった。

今回は、Send コマンドによりキー入力を連続しても問題がなかったので、Sleep コマンドは使わなかった。

2008年10月2日木曜日

AutoHotkey で サイトのタイトルと URL から、 FreeMind の子ノードを作成 (Firefox のみ)

FreeMind を使って調べものをしつつ、まとめていくとき、一番面倒なのはノードに対してリンクをつけること。これを AutoHotkey を使って自動化したい。

前提 : AutoHotkey がインスールされていること。

こちらをダウンロードしてダブルクリックで起動。→ ffLink2fm.ahk 。タスクトレイに アイコン 081002-002 が表示される。

 

使い方

  1. FreeMind で、新規に作成したいノードの「親になるノード」をアクティブにしておく。
  2. Firefox で対象のサイトを開く。
  3. Ctrl + Shift + L を押すことによって、FreeMind に新規ノードが作成される。

※ 上手く動作しないときは、下記の実装において適当に Sleep の値を大きくする。たまにおかしな動作をする。 ^^;

 

実装

^+l::   ; Ctrl + Shift + L

; JavaScript をロケーションバーに入力し、
; サイトのタイトルと URL をアラートに表示
clipboard = javascript:(function(){alert(document.title + "\n" + location.href)})();
Send ^l
Send ^v{ENTER}
Sleep 1000

; 表示されたアラートの内容をコピー
Send ^a^c{ENTER}

; クリップボードの内容を分割
StringSplit, url_ary, clipboard, `n
clipboard = %url_ary1%

SetKeyDelay 300

; アプリケーションの切り替え
Send !{Tab}

; FreeMind がアクティブになるのを待つ
SetTitleMatchMode, 2
WinWaitActive, FreeMind

; 新規子ノードを作成してペースト
Send {Ins}^v

; ノードにリンクを設定
clipboard = %url_ary2%
Send ^k^v{ENTER}

return

 

サイトのタイトルと URL の取得

以下の JavaScript をロケーションバーで実行することによって、アラートにサイトのタイトルと URL を表示。(cf. ブックマークレット) コピーしてクリップボードへ。

javascript:(function(){alert(document.title + "\n" + location.href)})();

 

文字列を分割したものを配列として利用

クリップボードから文字列を取り出し、タイトルと URL を配列に入れようと思ったら、AutoHotkeyを流行らせるページ - 配列 によると、

AutoHotkeyには配列型変数は無く、StringSplitWinGetなどのコマンドでは、配列の代わりに最後に数字の付いた変数に結果を代入する。

なるほど、文字列を区切ってそれを配列代りに使うと。StringSplit というコマンドのポイントは、出力される配列のようなもの。

ここで「array」を指定した場合、「array0」に要素数が、「array1」「array2」...に各要素が格納される。

(AutoHotkey – StringSplit より)

内容を参照するときも独特。以下では、組み込み変数である clipboard より改行を区切り文字に指定し、 url_ary 変数に分割した内容を入れている。参照するときは、%url_ary添字% と書く。

; クリップボードの内容を分割
StringSplit, url_ary, clipboard, `n
clipboard = %url_ary1%

(cf. StringSplit)

 

Insert キー

{Ins} と書く。(cf. Send/SendRaw/SendInput/SendPlay/SendEvent: Send keys & clicks )

 

その他

今回は使わなかったけれど、クリップボッドの内容を順次メッセージボックスに表示させるには次のようにする。

Loop, parse, clipboard, `n, `r
{
    MsgBox, , , %A_LoopField%
}

(cf. Clipboard, ClipboardAll, and OnClipboardChange, Loop (parse a string) )

追記 (2009.1.17) : 手動でやるならアドオン Make Link を使ってページのタイトルと URL より HTML の リンクとなる文字列を作成。Freemind でリンクを子ノードとして貼り付けたいノードを選択してペーストする。どちらがお手軽なんだろう... ^^;

AutoHotkey で Windows Live Writer に ソースコード を貼り付ける

追記 (2011.3.23) : リボンUI を採用した Windows LiveWriter 2011 の場合は、こちらを参照。


1. Windows Live Writer にソースコードを貼り付ける操作を自動化したい

ブログに掲載するソースコードは、google-code-prettify を使い、色付けしている。

google-code-prettify にソースコードを色付けしてもらうには、pre タグを使い、以下の形式で記述する必要がある。

<pre class="prettyprint">ソースコード</pre>

( cf. Windows Live Writer でソースコードの貼り付け )

ブログを書くのに Windows Live Writer を使用。ソースコードを貼り付けるために、HTML の編集モードにして、挿入する位置を探すのは面倒。 (+_+)

AutoHotykey を利用して、ソースコードを貼り付けるためのショートカットキーを設定。ブログに貼り付けたいコードを選択し、ホットキーを入力したら、上記の形式にして Windows Live Writer にペーストするようにしたい。

 

2. ソースコードを Windows Live Writer に貼り付けるためのスクリプト

スクリプトの起動方法

前提 : AutoHotkey がインスールされていること。

  1. 右のスクリプトをダウンロードした後、ダブルクリックして起動。→ pasteHTMLCode2Writer-old.ahk
  2. タスクトレイに アイコン 081002-002 が表示される。

 

使い方
  1. Windows Live Writer で、予めソースコードを挿入したい位置にカーソルを移動。
  2. ソースコードが書かれているアプリケーションをアクティブにし、対象のコードを選択。
  3. Ctrl + Shitf + Q を押すことによって、ソースコードが Windows Live Writer に貼り付けられる。

※ ソースコードが書かれているアプリから Windows Live Wirter に切り替えるとき、Alt + Tab のショートカットキーを利用して切り替えている。よって、上記の 1 の操作は必ず必要。

※ もし上記操作で動作しない場合、以下の実装における Sleep コマンドの値を大きくするといいかも。

 

3. スクリプトの実装方法

スクリプトは、以下の通り。

^+Q::    ; Ctrl + Shift + Q
Send ^c    ; コピー
Send !{Tab}   ; Alt + Tab でウィンドウを切り替える

; Windows Live Writer がアクティブになるのを待つ
SetTitleMatchMode, 2
WinWaitActive, Windows Live Writer, , 2

; クリップボードの内容を変更
clipboard = <pre class="prettyprint">%clipboard%</pre>
Sleep 500
Send ^+v   ; 形式を選択してペースト
Sleep 800
Send H    ; HTML を選択
Sleep 600
Send {ENTER}  ; OK ボタンを押す
return

 

複数行の文をホットキーに割当てる

複数行に渡ったコマンドを書くには、最後に return を付ける。

ホットキー ::
コマンド1
コマンド2
...
return

(cf. Launching a program or document)

 

キーの入力

キーの入力を行うには、Send コマンド を利用する。

特殊なキーを入力をするには、以下のように書く。

  • Ctrl   : ^
  • Alt    : !
  • Shift : +

cf. Hotkeys (Mouse, Joystick and Keyboard Shortcuts)

 

ソースコードを貼り付ける先のウィンドウを確認する方法

ソースコードを貼り付ける先の、ウィンドウがアクティブになるまで待つコマンドを利用。

タイトルの中の一部を指定することによって、見つけることができるように、

を設定した。

 

クリップボードの中身を更新

コピーしたテキストはクリップボードに転送される。クリップボードにアクセスするためには、組込み変数

clipboard

を利用する。

(cf. Clipboard, ClipboardAll, and OnClipboardChange)

 

アプリケーションの反応を待つために一時停止する

Send コマンドによってキー入力を連続して行ったら、アプリケーションがそのスピードに対応できなかった。そのため、 Sleep コマンドを送った後短い時間一時停止するようにした。

一時停止しておく適切な時間間隔がわからなかったので、 とりあえず、自分の環境において思ったように動く値を適当に入力。

Sleep コマンド以外でも、SetKeyDelaySetWinDelay によって処理を遅らせることができるようだ。

 

エラー処理はしてない

ホットキーを入力した際、失敗することもあるけれど、エラー処理は面倒なのでしなかった。

てゆうか、まだエラー処理まで読んでない。… ^^;

AutoHotkey で Hello, world!

AutoHotkey のダウンロードとインストール

AutoHotkey Download より、AutoHotkey をダウンロードしてインストール。

追記 (2011.3.22) : AutoHotkey - Wikipedia によると、

As of October 10, 2010, the author has stated that AutoHotkey_L has become the ongoing development of AutoHotkey and this has been placed in the download section on the website.

とのことなので、Installer for AutoHotkey_L の方を使うようにした。

 

Hello world をダイアログに表示

テキストエディタで、以下のように記述。

MsgBox "Hello, world!"

ファイル名に `hello.ahk’ と名前を付けて保存。ファイルの拡張子を

.ahk

とすることにより AutoHotkey のスクリプトであることを示す。

コマンドや変数は大文字・小文字を区別しないことに注意。

用意されているコマンドは、

を参照。

 

実行方法

上記で作成した hello.ahk をダブルクリックして実行。以下のようなダイアログが表示される。

081002-003

ダイアログが表示されている間は、タスクトレイに AutoHotKey のアイコン 081002-002 表示されている。終了と共に消える。

 

ホットキーで Hello world

次に、Ctrl + H をキーボードから入力することにより、”Hello, world!” と出力されるように変更する。

^H::MsgBox "Hello, world!"

「ホットキー::コマンド」

という形式によって、ホットキーを押したときにスクリプトが実行されるようになる。`^’ はコントロールを表わす。

 

ホットキーによる実行

先ほどと同じようにファイル `hello.ahk’ をダブルクリック。今度はすぐにダイアログが表示されないが、タスクトレイに AutoHotKey のアイコン 081002-002 表示されている。

この状態で `Ctrl + H’ を押すと、`Hello, world’ のダイアログが表示される。

タスクトレイに AutoHotKey のアイコンが表示されている間は、このキーボードの入力が有効になっている。終了させるには、アイコン 081002-002  を右クリック > Exit を選択する。

 

ホットキーで複数の文を実行

追記 (2011.3.22) : 複数の文に対して、ホットキーを付けたい場合は、AutoHotkey Tutorial: Macro and Hotkey Creation によると、

To have more than one command executed by a hotkey, put the first line beneath the hotkey definition and make the last line a return.

つまり、以下のような形式となる。

ホットキーの設定

実行したい文

return

先ほどの Hello world の後に hoge, piyo, fuga とダイアログを表示させたい場合は、

^H::
MsgBox "Hello, world!"
MsgBox "hoge"
MsgBox "piyo"
MsgBox "fuga"
return

 

参考