AHKを使ってGeanyからDreamPieへ選択されたテキストを送って実行する。
MATLABのエディターはF9を押すと選択されたテキストがコンソールへと送られて、そのまま実行されるナイスな機能があります。Pythonをウィンドウズで使っている場合、似たようなことをするにはPyScripterというエディターでCtrl+F7で出来て、なかなかいいんだけど多少もっさりしているのとGeany+DreamPieの組み合わせに慣れすぎたためPyScripterはあまり使っていない。(UbuntuならGeanyだけでコンソールが統合された環境になるみたいだけども。)
ところが今日、偶然にもGeanyのWikiサイトができているのを発見し、こんなAutoHotKeyのスクリプトでGeanyとConsole2を連動させる方法みつけた。しかし、なぜか多少変更しないとうちの環境では動かなかったので、念のためConsole2の変更後を貼ってみる。
TestConsole()
{
IfWinNotExist, ahk_class Console_2_Main,
{
Run, C:\Program Files (x86)\Console2\Console.exe -t Console2
WinWait, ahk_class Console_2_Main,
}
}ActivateConsole()
{
TestConsole()
WinActivate, ahk_class Console_2_Main,
WinWaitActive, ahk_class Console_2_Main,
}#1::
WinGetActiveTitle, editor
old_clipboard = %clipboard%
Send, {CTRLDOWN}c{CTRLUP}
ActivateConsole()
Send, {SHIFTDOWN}{INSERT}{SHIFTUP}{RETURN}
WinActivate, %editor%,
clipboard = %old_clipboard%
return
Console.exeへのパスのところを自分の環境に合わせて変更するのは当たり前だけど、WikiではSend, {SHIFTDOWN}{INSERT}{SHIFTUP}{RETURN}のところがCnrl Endになっていてこれがだめだった。#2,#3は省略しました。
では、いよいよDreamPie版。
ActivateDreampie()
{
IfWinExist DreamPie ahk_class gdkWindowToplevel
{
WinActivate
}
else
{
Run, C:\Users\ユーザー名\AppData\Local\DreamPie\dreampie.exe --hide-console-window "C:\Python27\python.exe"
WinWait DreamPie ahk_class gdkWindowToplevel
WinActivate DreamPie ahk_class gdkWindowToplevel
}
}LAlt & r::
F9::
WinGetActiveTitle, editor
old_clipboard = %clipboard%
Send, ^c
ActivateDreampie()
Click 100,100
Send, {Tab}
Send, ^a
Send, {Del}
Send, ^v
Send, ^{Enter}
WinActivate, %editor%,
clipboard = %old_clipboard%
return
ショートカットは!rでAlt+Rにしてみたが、Windowsキー+rなら#rになる。まあ詳しくはAHKのチュートリアルを参照。DreamPieへのパスとPythonへのパスも適当に変更してください。(追記:複数のキーを割り当てることもできることが判明したので、左のAlt+rにしたうえでF9も追加し、さらにマルチラインエディターの高さの設定に影響を受けにくいようにタブで移動してくるようにコード修正しました。)
追記 ClickのところはDreamPieの大きさによって変わります。たぶんディスプレイの解像度設定でDreamPieの大きさが変わるようです。AHKに付属しているWindow SpyをつかってMouse PositionのIn Active Windowの値を見ながら下のマルチライン入力窓の中をクリックするように調整してください。
(使い方)
AHKのBasicをインストールして、一度起動したらマイドキュメントにできるAutoHotKey.ahkというファイルを編集して上記の内容にします。あとはAHKを立ち上げた状態でGeanyでAltキーとRを押すとDreamPieがアクティブになって選択されたテキストが実行されるはず。DreamPieが起動していなかったら起動するようにしたまではいいけど、現時点ではDreamPieがすでに実行されていないとテキストがうまく貼りつけられないバグあり。これはちょっとやっただけではデバッグできんかった。。RunWaitでだめでWinWaitにしたがこれもだめ。
AutoHotKeyを使ってできそうなことはなんとなくわかっていたが、PythonでWin32com経由で鮮やかにできるんじゃないかとかおもいつ つ敬遠していたが、かなり自分のやりたいことに近いことをしているスクリプトをWikiに載せてくれた親切なお方のお陰でやる気になった。Dropbox PortableのAHK版も使っているのでAHKはすごそうだなぁとはおもっていたけど、いやいや便利だわ。初めて使ったけど簡単だし。Win32comはドキュメンテーションが絶望的に難しかったのをみたあとなので、お手軽なAHKは素晴らしいと思う。
さらに追記。MATLABのコンソールではESCキーを押すと入力中のテキストをクリアしてくれる。この機能もAHKで実装できた。ちゃんとDreamPieがアクティブなときだけ働くようにしてみた。使い方は、上にあるスクリプトに下のコードを追加するだけです。
さらに追記。初めのバージョンだと他のウインドウがアクティブなときにもESCキーイベントを奪ってしまい、そのウインドウがESCイベントを受け取らないようなので、Context-sensitive Hotkeysというのを使うように変更。
Esc::
IfWinActive DreamPie ahk_class gdkWindowToplevel
{
ActivateDreampie()
Click 100,100
Send, {Tab}
Send, ^a
Send, {Del}
}#IfWinActive DreamPie ahk_class gdkWindowToplevel
Esc::
ActivateDreampie()
Click 100,100
send, {Tab}
Send, ^a
Send, {Del}
« PortableApps.com Platform 10.0.1リリース! | トップページ | Phytonコンソールへエクセルのテーブルをコピペ »
「パソコン・インターネット」カテゴリの記事
- Linuxのデスクトップ環境にログインした時にxmodmapコマンド実行(2023.12.30)
- youtube-dlでrumbleをダウンロード(2023.12.06)
- Pop!_OSのアプデがfcitxを繰り返し葬る件(2023.05.22)
- vue.jsで遊んでみる(2023.01.02)
- 『将棋神やねうら王』のオープンソース版MyShogiをLinux Mint 19.1でビルドしてみた件(2019.03.24)
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
« PortableApps.com Platform 10.0.1リリース! | トップページ | Phytonコンソールへエクセルのテーブルをコピペ »
コメント