AutoHotKey

右Altが要らないのでGoogle翻訳ショートカットに使う

Windows限定ながら、どのアプリケーションからでも1発でGoogle翻訳(またはDeepL)に遷移する方法をまたまたAutoHotKey + 右Altで実現する。紹介する方法は英⇒日のみ想定しているが、逆もやれば出来ると思う。

翻訳したい英文をCtrl+Cでクリップボードにコピーして、右Alt+Tで、Google翻訳にジャンプ、という2手で目的達成。

伝統の右Alt狂シリーズです。

事前準備

Google翻訳も、DeepL翻訳もURLに文字列を渡すことで、翻訳画面にテキストがプリセットされた状態を実現できるので、これを利用する。

右Alt活用のため、キーコードを事前に変更しておく必要がある。

Autohotkeyも使うので適宜インストール。

Autohotkeyのスクリプト設定

私は英文契約書を書いたり、海外とやりとりすることが多いので、最近は専らDeepL派である。ということで、

右Alt+TならDeepL、右Alt+TT(連打)ならGoogle翻訳、となるようにスクリプトを作成した。TranslateなんでとりあえずT。

文章中に/が入っていると上手くパラメータを渡すことができないのでDeepLのときだけ追加でエスケープしている。

; Google translate from clipboard
sc159 & T::
	en_text := LC_UriEncode(CLIPBOARD)
	Keywait, T, U
	Keywait, T, D T0.3
	if (ErrorLevel) {
		en_text := StrReplace(en_text, "%2F", "%5C%2F")
		Run,https://www.deepl.com/translator#en/ja/%en_text% ; DeepL Translator if T is single-pressed
	} else {
		Run,https://translate.google.co.jp/#en/ja/%en_text% ; Google Translator if T is double-pressed
	}
Return
; ------------- Methods --------------
; Reference http://goo.gl/0a0iJq
LC_UriEncode(Uri, RE="[0-9A-Za-z]") {
	VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0), StrPut(Uri, &Var, "UTF-8")
	While Code := NumGet(Var, A_Index - 1, "UChar")
		Res .= (Chr:=Chr(Code)) ~= RE ? Chr : Format("%{:02X}", Code)
	Return, Res
}

私は英語を自分で書いて、日本語に変換してレビュー、という目的でしか使わないので、日⇒英のスクリプトは作っていないが、上記URLのenとjaを入れ替えれば多分逆方向もできるんじゃないかな。(適当)

まとめ

右Alt+Tでクリップボードの値をGoogle or DeepL翻訳。

それにしてもDeepL賢すぎます…

Posted by 効率化好きな人 in productivity, 0 comments
右Altキーが要らないので違う使い道を考える – Vim風カーソル移動編

右Altキーが要らないので違う使い道を考える – Vim風カーソル移動編

Windowsのキーボードに存在する右Altキー。全く使わないものの、ホームポジション上自然と親指が当たるところだし、位置的にはかなり美味しい。
そこで、特殊モディファイアーキーとして利用することで、幸せになれる使い道を考える。

幸せになれる使い道

唐突だが早速、右Alt + hjklで、どんなアプリケーションでもVim風にカーソル移動できるようにしよう。

Vim的カーソル移動の最大の利点はホームポジションから移動せずにカーソルを動かす事が出来る点にある。右Altは前述の通り親指で操作が可能なので、これが実現出来れば、矢印キーに指を持って行く必要が無くなる。

ノートPCならまだマシだが、以下の図のように、据え置きのフルサイズキーボード使ってるとカーソルが余りに遠い。

HHKBのような玄人キーボードはホームポジションから動かさずカーソル移動が出来るように考えられているが、アレはアレでユーザを選ぶ。

https://commons.wikimedia.org/wiki/File:ANSI_Keyboard_Layout_Diagram_with_Form_Factor.svgより借用

まあものは試しって事で、実際に設定してみよう。

実現方法

実現方法は、大きく分けて2ステップからなる。

  • キーマッピングの変更
  • Autohotkeyのスクリプト追加

右Altキーマッピングの変更

AltキーをAltキーのままにしておくと、hjklを押下したときに、Alt+hなど既にありそうなタダのキーボードショートカットが発火してしまう。ので、まずは右Altキーを、通常のキーボードレイアウトに存在しないキーコードに変えてしまおう。

オススメはChange Keyというツールを使う方法。詳しい人はレジストリから直接弄ってもいいです。(Change Keyを使っても結果的にレジストリが書き換わってるので、いずれも自己責任)

右Altを選んで、0xe059を直接入力する。

参考にさせて頂いたのはこちらのブログ。こちらの作者さんはIMEの切替キーとして利用されています。

再起動すると、右Altは0xe059として生まれ変わる。

Autohotkeyの設定

Autohotkeyのスクリプトに以下を書き込む。右Alt + Spaceで全角半角切替、というのも仕込んだが、こちらはあまり使っていない。

sc159 & h:: Send, {Blind}{left}
sc159 & l:: Send, {Blind}{right}
sc159 & k:: Send, {Blind}{up}
sc159 & j:: Send, {Blind}{down}
sc159 & Space:: Send, {vkF4sc029} ; 右Alt+Spaceで全角半角切替

これで、全てのツールをhjklで操作することができるようになった。矢印キーキャップは窓から投げ捨てよう。

なお、Autohotkeyを駆使すると、矢印キー以外にもホイールスクロールとか右クリックメニューとか設定できる。気がついたら私はここまでエスカレートしていた。ホイールスクロールは特にオススメ。

sc159 & 9:: Send, {Blind}{PgUp}
sc159 & 0:: Send, {Blind}{PgDn}

sc159 & `;:: Send, {Blind}{Home}
sc159 & ':: Send, {Blind}{End}
sc159 & /:: Send, {Blind}{Insert}

sc159 & ]:: Send, {Blind}{WheelDown}
sc159 & [:: Send, {Blind}{WheelUp}
sc159 & -:: Send, {Blind}{WheelLeft}
sc159 & =:: Send, {Blind}{WheelRight}
sc159 & o:: Send, ^{WheelDown}
sc159 & p:: Send, ^{WheelUp}

sc159 & ,:: Send, {Blind}{XButton1}
sc159 & .:: Send, {Blind}{XButton2}
sc159 & \:: Send, {AppsKey}

まとめ

Change KeyとAutohotkeyの組み合わせで、矢印キーを二度と触らなくても良くなる。

ついでにHome/Endとかホイールスクロールもホームポジションで制御出来るようになる。

そして、クリエイティビティ次第で、右Alt + 何か、という無限の可能性が生まれる。

Posted by 効率化好きな人 in productivity, 0 comments
Teams/Zoom等Web会議システムで、Pauseキーをトグルミュートとして使う

Teams/Zoom等Web会議システムで、Pauseキーをトグルミュートとして使う

在宅勤務でWeb会議増えがちなのでWeb会議システムに依らず物理ボタン1つでミュートオン/オフをトグルする事ができる方法を考えた。一言で言うとPauseキーとAutohotkeyを使う。

在宅勤務が続いて、国内の人ともZoomやMicrosoft Teams で会議をすることが増えた。Web会議でありがちなのは、ミュートし忘れ・解除し忘れだ。コレ自体を防ぐには今のところ「気を付ける」しか方法がなさそうであるが、いかんせんトグルミュートのキーボードショートカットキーは使いづらいし、アプリによってまちまちだ。

アプリによってミュートのキーボードショートカット違うのが(しょうがないんだろうけど)やはり気に入らない。直感的に切替える方法は無いものか、とキーボードに目をやると、そこにはPauseキーが!!!

US配列87キー。テンキーがあるとマウスが遠くなるからだめ。

そういえば何に使うのこれ、、と思って調べてみると、、

プログラムの暴走を止めたり、役に立つ情報を表示したりと、たまには便利な使い道があるようです。

https://sittoku.net/pause-break-key.html

うん、潰して良さそうだ…

ということで、効率化マニア御用達のAutohotkeyを使って、ZoomでもMicrosoft TeamsでもPauseキー1ボタンでトグルミュートが出来るスクリプトを作った。ついでにディスコンが決まっているSkype for Businessも仲間に入れてあげた。

; Unify "Toggle Mute" across all video conference apps
Pause::
if ( WinActive("ahk_class ZPContentViewWndClass")  ){
	Send, !a ;Zoom
}else if ( WinActive("ahk_exe Teams.exe") ) {
	Send, ^+m ; Microsoft Teams
}else if ( WinActive("ahk_exe lync.exe") ) {
	Send, #{F4} ; Skype for business
}

ちなみに、

  • Zoomのミュートは[Alt] + A
  • Microsoft Teamsのミュートは[Ctrl] + [Shift] + M
    • さっとググったらWebExも同じっぽい
  • Skype for businessは[Win] + F4

WinActive関数の中に対象のウィンドウを突っ込めば、アプリケーションに応じて別のキーを送る事が出来るようになる。(ところでSkype for businessのキーボードショートカットセンス悪すぎない?)

アプリケーションの中でも特定のウィンドウを指定したい場合はahk_class、ざっくりアプリケーションが特定できていれば良ければ、ahk_exeを使う。

ahk_classやahk_exeに何を設定したら良いかは、AutoHotKeyのWindow Spy画面を呼び出すと分かる。

WebExあんまり使わないので、何て出てくるか誰か教えてください…

蛇足

AutoHotKeyはWindowsユーザには神ツールで、アイディアさえあればいろんな事に使える。

右Altが要らないのでクリップボードの英語を一発でGoogle翻訳するのに使う(DeepLも対応)

右Altキーが要らないので違う使い道を考える – Vim風カーソル移動編

以下は昔からある、「Web会議あるある」の古典ムービー。自分が知ったのはこれ出た当時だけど、今見ても良く出来てると思う。

Posted by 効率化好きな人 in productivity, 0 comments