情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

AutoHotkeyで無変換+数字をファンクションキー(F1-F10)にする方法 このエントリーを含むはてなブックマーク

AutoHotkeyで修飾キー(Ctrl,Shift,Alt,Win)の状態(^!+#)を取得する関数を作る方法」で作成したget_modifiers関数と、「AutoHotkeyで変数名を組み立てて変数の中身を取得するちょっと不思議な方法」で作成したget_postfix_key関数を利用して、無変換+数字をF1-F10に割り当ててみます

無変換+数字をFキーに割り当てるAutoHotkeyスクリプト(.ahk)

コードは以下の通りです。

~vk1Dsc07B & 1::
~vk1Dsc07B & 2::
~vk1Dsc07B & 3::
~vk1Dsc07B & 4::
~vk1Dsc07B & 5::
~vk1Dsc07B & 6::
~vk1Dsc07B & 7::
~vk1Dsc07B & 8::
~vk1Dsc07B & 9::
~vk1Dsc07B & 0::
	postfix_key := get_postfix_key()
	if postfix_key = 0
		postfix_key := 10
	modifiers := get_modifiers()
	Send, %modifiers%{F%postfix_key%}
	return

get_modifiers() {
	modifiers := ""
	if GetKeyState("Ctrl", "P")
		modifiers = %modifiers%^
	if GetKeyState("Shift", "P")
		modifiers = %modifiers%+
	if GetKeyState("Alt", "P")
		modifiers = %modifiers%!
	if GetKeyState("Win", "P")
		modifiers = %modifiers%`#
	return %modifiers%
}

get_postfix_key()
{
	StringSplit, hotkey_array, A_ThisHotkey, %A_Space%&%A_Space%
	StringTrimLeft, postfix_key, hotkey_array%hotkey_array0%, 0
	Return postfix_key
}

「vk1Dsc07B」は無変換キーを表していますここでは仮想キーコードとスキャンキーを両方書いていますが、片方で良いかもしれないです

get_postfix_key()では、prefixkey(無変換キー)と同時に押したキー(0,1,...,10)を検出しています。これにより、無変換+数字に対して一貫したコードを記述できています。

また、このようなコンビネーションキーを記述した場合、CtrlやShiftを表す^や+などの修飾キーを「::」の前に含めることが出来ないので、get_modifiers()を利用してCtrlやShiftの状態を取得しています。

このようにして、get_postfix_keyとget_modifiersを使用することできれいに「無変換+数字→ファンクションキー」を実現できています。

Windowsダンプの極意 エラーが発生したら、まずダンプ解析!
Advanced Windows 第5版 上 (マイクロソフト公式解説書)
インサイド Microsoft Windows 第4版〈上〉 (マイクロソフト公式解説書)
APIで学ぶWindows徹底理解

スポンサーサイト
AutoHotkey | コメント:0 | トラックバック:0 | 編集

AutoHotkeyでIfとWhileの条件節を書くときの注意点 このエントリーを含むはてなブックマーク

注意点

GetKeyState ctrl_state, Ctrl, P

などで、Keyの状態を取得したとき、押し下げを判定するIf文とWhile文は次のように書きます

If ctrl_state = D {
...
}

While ctrl_state = "D" {
...
}

なぜか、「D」と「"D"」という違いがあります。構文エラーが出るわけでもなく、ずっと結果がFalseになるだけなので注意。

おすすめキーボード Realforce
プログラマ御用達キーボード PFU Happly Hacking Keyboard

AutoHotkey | コメント:0 | トラックバック:0 | 編集

キー状態の判定結果を利用する場合の注意点(AutoHotkey) このエントリーを含むはてなブックマーク

今回は、AutoHotkeyにおいて条件判定を書く場合の注意点をメモ。

キーの押し下げに応じた場合分け

コンビネーションキーは2キーまでの組み合わせであり、また、修飾子(^,+,!,#)が利用できないため、コンビネーションキーにおいて修飾子を使いたい場合は次のようになります。3キー同時押しも同様

a & b::
	GetKeyState, ctrl_state, Ctrl, P ; (1)
	If ctrl_state = D
		MsgBox, ^ab is pressed.
	Else
		MsgBox, ab is pressed.
	Return

(1)の式で、Ctrlキーの押し下げ状態(Down中→D、Up中→U)を変数ctrl_stateに格納しており、次の行で条件判定をしています。

判定結果を変数に入れる

本題はここからで、この判定結果を変数に入れたいとします。

a & b::
	GetKeyState, ctrl_state, Ctrl, P
	ctrl_on = (ctrl_state = D)
	If ctrl_on
		MsgBox ^ab is pressed.
	Else
		MsgBox, ab is pressed.
	Retur

実は、このときCtrlの状態に関わらず「^ab is pressed.」と表示することはありません。つまり、変数ctrl_onは常にFalse(0)になってしまいます。

どうしてかは分かりませんが、

ctrl_on = (ctrl_state = D)

を、

ctrl_on = (ctrl_state = "D")

とすれば思ったように動作します。

まとめ

今回は前回以上に小ネタなのですが、AutoHotkeyを使っているとこのような小ネタが量産されていきます。また書こうと思います。

おすすめキーボード Realforce
プログラマ御用達キーボード PFU Happly Hacking Keyboard

AutoHotkey | コメント:0 | トラックバック:0 | 編集

svnコマンドをSubclipseで実行しチェックアウトする このエントリーを含むはてなブックマーク

オープンソースソフトウェアは、ソースコードのダウンロード方法として、コマンドラインだけ提示されていることがあります。今回は、そういう場合にコマンドラインを使わず、Subclipseを利用してソースコードをダウンロードしてみます。

SubclipseをSubclipseでチェックアウトしよう

EclipseプラグインSubclipseのソースコードを、まさにそれ自体であるSubclipseでチェックアウトしてみます。

コマンドラインによるチェックアウト方法は書いてある

Subclipseの公式ページには、ソースコードをチェックアウトする方法として、

svn checkout http://subclipse.tigris.org/svn/subclipse/trunk subclipse --username guest
というコマンドが提示されています。これは、コマンドラインを利用する場合の方法です。このコマンドによって、guestユーザの権限で、subclipseというディレクトリにtrunkフォルダ内のソースコードがチェックアウトされます。

ただ、Subclipseに直接このようなコマンドを入力することはできません。また、Subclipseに限らず、このようにコマンドラインでのチェックアウト方法だけが書いてあることは多々あります

Subclipseでチェックアウトする

まず、パッケージエクスプローラ(Package Explorer)上の何もないところで右クリックをして、「Import...(インポート)」を選択しますEclipseを日本語化していないので、日本語表記は怪しいです。日本語化している人の方が少数派ですよね。。。

続いて、表示された選択肢の中から、「SVN>SVNからプロジェクトをチェックアウト」を選択し、「Next>」をクリックします。

ロケーションの選択/生成画面が表示されたら、「新規レポジトリー・ロケーションを生成」を選択して「Next>」をクリックします。

次は、ロケーションを求められます。ここでは、ロケーションとして、

svn://guest@subclipse.tigris.org/svn/subclipse/trunk
なんかに勝手にしないことです。なんとなく、「subversionだから、svn://とかあったよな」という考えでこのようにしてはいけません。なぜなら、svn://は、svnサーバが提供されている場合しか使えず、あくまでhttp://でアクセスしろと言うことなので、余計なことはしてはいけないからです。じゃぁ、どうすればいいかというと、ここは普通に
http://subclipse.tigris.org/svn/subclipse/trunk
と入力してください。入力後、「Next>」をクリックします。

続いて、「ユーザ名とパスワードの入力」画面が表示されるので、

ユーザ名:guest
パスワード:<何も入力しない!>
とします。パスワードを保存しても何も困らないので、「パスワードを保存する」にチェックを入れておくといいかもしれません。入力後、「OK」です。

すると、以下のようにチェックアウトするフォルダの候補がずらっと表示されます。

subclipse
subclipse_mylyn
subclipse_mylyn3
svnClientAdapter
svnant
www
ここで、チェックアウトしたいプロジェクトのフォルダを選択して「Next>」です。普通は「subclipse」ですね。

すると、「チェックアウトの方法とリビジョンの選択」画面が表示されます。

フォルダ subclipse をチェックアウトする方法を選択してください
  • 新規プロジェクトウィザードを使ってプロジェクトとしてチェックアウト
  • プロジェクトとしてワークスペースへチェックアウト
では、「プロジェクトとしてワークスペースへチェックアウト」が選べる場合は選んでしまった方が楽です。 また、
Check out HEAD revision
にチェックを入れることで、最新版がチェックアウトされます。通常、チェックを入れたままにしましょう。

残りのオプションですが、「Depth」は、「Fully recursive」を選択してください。Fully recursive以外だと、すべてのファイルがチェックアウトされません。また、「Ignore externals」にチェックを入れると、外部参照を無視してしまいます。普通はチェックを入れてください。「Allow unversioned obstructions」にチェックを入れないと、ローカルフォルダにたまたまあったバージョン管理されていないファイルと衝突した場合、チェックアウトがキャンセルされます。これはそのままでいいと思います。 以上の入力が完了したら「Next>」。

最後に「プロジェクトのロケーション選択」画面が表示されるので、必要に応じてワークスペースを選択してください。選択したら、いよいよ「Finish」です。

Javaプロジェクトとしてチェックアウトしたい

Javaプロジェクトとしてチェックアウトしたい場合など、プロジェクトのタイプを指定したい場合は、

フォルダ subclipse をチェックアウトする方法を選択してください
  • 新規プロジェクトウィザードを使ってプロジェクトとしてチェックアウト
  • プロジェクトとしてワークスペースへチェックアウト
で「新規プロジェクトウィザードを使ってプロジェクトとしてチェックアウト」を選択してください。直後の画面で、「Java>Java Project」を選択してください。ほかにもいろいろありますが、適切なものを選択してくださいここでまた「SVN>SVNからプロジェクトをチェックアウト」にしてしまうと、無限ループが始まってしまうので注意

ちなみに、Subclipseをチェックアウトするなら「Plug-in Project」でいいんでしょうかね。

おわり

以上でチェックアウト終了です。

追記:Subclipseをチェックアウトするとき

チェックアウトをプロジェクトごとに行うなら、「/trunk/subclipse」ではなく一つ深い階層のたとえば「/trunk/subclipse/org.tigris.subversion.subclipse.core」を選択して「プロジェクトとしてワークスペースへチェックアウト」をチェックしてチェックアウトしてください。すると、.projectファイルがあるので、正しくチェックアウトできます。

Subversion実践入門
実用SSH
Eclipse 実践開発入門

Subversion | コメント:0 | トラックバック:0 | 編集

Nero CD-DVD Speed が Opti Drive Control になってた このエントリーを含むはてなブックマーク

Nero CD-DVD Speed がいつの間にかに「Opti Drive Control」というソフトに統合されていました。

Nero CD-DVD Speedの公式サイトがOpti Drive Controlの公式サイトになり、30日の試用期間付きのシェアウェア($24.95 USD or 19.95 EUR)になっていました。

ということで、Nero CD-DVD Speedのフリー版がなくなってしまったようです。

とりあえず、未だにNero CD-DVD Speedのフリー版は公式以外のダウンロードサイトから入手できるようですが、バージョンアップされないので、いずれNero CD-DVD Speedは使えなくなってしまうのでしょうかね。

ほかにもディスクやドライブの診断ツールはあるので、そちらに乗り換えるべきか。

ソフトウェア | コメント:0 | トラックバック:0 | 編集
 | HOME | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。