Linux

Linuxで特定のフレーズを自動置換したりショートカットにスクリプト実行を割り当て可能なAutoKeyの使い方

はじめに

AutoKeyは、キーボードのショートカットにスクリプト実行を割り当てたり特定のフレーズを入力した時に事前登録したテキスト文に自動で置換したりしてくれるLinux用のユーティリティツールです。Windowsでは似たようなアプリAutoHotKeyがあり、それのLinux版です。この記事では、AutoKeyのインストール方法と簡単な使い方をまとめます。

AutoKeyについて

まずはじめにAutoKeyでできることの動作イメージを載せます。以下のGIF画像のようにユーザが設定した特定のフレーズ(以下GIF画像内ではtestauto)を適当なテキストエディタで入力すると、入力してEnterやスペースキーを押下した時点で事前に割り当てて登録していたテキスト文(以下GIF画像内では置換したい内容というテキスト文)に置換してくれます。

また、aulinkという適当なフレーズを<a href="" target="_blank"><a>へとも自動置換しています。
さらに、上記のような特定のフレーズだけでなく、特定のショートカットに対してPythonスクリプトを実行させることができます。

以下がAutoKeyの公式リポジトリです。

AutoKey

AutoKey, a desktop automation utility for Linux and X11.

前提と環境

以下の通りです。Ubuntu18.04にインストールしました。

  • OS : Ubuntu18.04
  • Python : 3以上

AutoKeyをインストールして起動する

まず、こちらの公式リポジトリから2つのdebパッケージファイルをダウンロードします。以下の0.95.7-0は2019年10月時点での最新のバージョン番号です。公式リポジトリで最新のバージョンを確認してより新しいのがある場合は置き換えてください。

  • autokey-common_0.95.7-0_all.deb
  • autokey-gtk_0.95.7-0_all.deb

ただし、autokey-gtk_0.95.7-0_all.debはGNOME、Mate、Unity環境を使用している場合です。もしKDEを使用している場合は、autokey-gtk_0.95.7-0_all.debではなく、autokey-qt_0.95.7-0_all.debに置き換えてください。

ちなみに、apt経由でも上記2つのパッケージをインストールできますが、これらはバージョンが古くPython3系ではなくPython2系が必要となります。機能も古いため、公式リポジトリからパッケージをダウンロードしてPython3系環境で使用することをおすすめします。ここでは、最新パッケージをダウンロードしてPython3系の環境を前提で進めます。

2つのdebパッケージファイルをダウンロードしたら、以下のコマンドを実行します。ここでは、ホームディレクトリ下のDownloadsディレクトリにそれぞれダウンロードしたとします。

~/Downloads$ sudo dpkg --install autokey-common_0.95.7-0_all.deb autokey-gtk_0.95.7-0_all.deb 
$ sudo apt --fix-broken install

上記を実行してもし以下のようなエラーが表示される場合は、指示通りにpython3-xlibをインストールしてください。

~/Downloads$ sudo dpkg --install autokey-common_0.95.7-0_all.deb autokey-gtk_0.95.7-0_all.deb 
以前に未選択のパッケージ autokey-common を選択しています。
(データベースを読み込んでいます ... 現在 441994 個のファイルとディレクトリがインストールされています。)
autokey-common_0.95.7-0_all.deb を展開する準備をしています ...
autokey-common (0.95.7-0) を展開しています...
以前に未選択のパッケージ autokey-gtk を選択しています。
autokey-gtk_0.95.7-0_all.deb を展開する準備をしています ...
autokey-gtk (0.95.7-0) を展開しています...
dpkg: 依存関係の問題により autokey-common の設定ができません:
 autokey-common は以下に依存 (depends) します: python3-xlib ...しかし:
  パッケージ python3-xlib はまだインストールされていません。

以下でpython3-xlibをインストールできます。

~/Downloads$ sudo apt install python3-xlib

上記実行後、改めて実行すると以下のように何もエラーが表示されなければOKです。

~/Downloads$ sudo dpkg --install autokey-common_0.95.7-0_all.deb autokey-gtk_0.95.7-0_all.deb 
(データベースを読み込んでいます ... 現在 442198 個のファイルとディレクトリがインストールされています。)
autokey-common_0.95.7-0_all.deb を展開する準備をしています ...
autokey-common (0.95.7-0) で (0.95.7-0 に) 上書き展開しています ...
autokey-gtk_0.95.7-0_all.deb を展開する準備をしています ...
autokey-gtk (0.95.7-0) で (0.95.7-0 に) 上書き展開しています ...
autokey-common (0.95.7-0) を設定しています ...
autokey-gtk (0.95.7-0) を設定しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) のトリガを処理しています ...
Rebuilding /usr/share/applications/bamf-2.index...
desktop-file-utils (0.23-1ubuntu3.18.04.2) のトリガを処理しています ...
gnome-menus (3.13.3-11ubuntu1.1) のトリガを処理しています ...
mime-support (3.60ubuntu1) のトリガを処理しています ...

以下のようにヘルプが表示されれば無事にインストール完了です。

~/Downloads$ autokey -h
Usage: autokey [options]

Options:
  -h, --help       show this help message and exit
  -l, --verbose    Enable verbose logging
  -c, --configure  Show the configuration window on startup

後は、AutoKeyを起動以下で起動します。AutoKeyを起動するには、以下のようにautokeyと実行するだけです。&はバックグランド起動のためです。

$ autokey &

上記を実行しただけでは何も起きませんが、続いてAutokeyの設定を行います。

Autokeyの設定を行う

端末で以下のコマンドを実行します。

$ autokey -c

上記を実行すると、以下のようなウィンドウが開きます。

Autokeyでは、設定をフォルダー毎に保存することができます。まずはじめに、自身の設定を保存するための適当なディレクトリを作成します。デフォルトではいくつかディレクトリが作成されていますが、別に作成します。以下のように、メニューの「File」→「New」→「Folder」をクリックします。

以下のように「新規」から作成してもOKです。

上記のいずれかで「Folder」をクリックすると、以下のようにAutokeyの設定を保存したいディレクトリを選択するようウィンドウが開くので適当なディレクトリを選択します。デフォルトでは、設定ファイルの置き場所は~/.config/autokey/data下のディレクトリになっているので、ここではこのディレクトリ下に新しいディレクトリを作成します。
以下のように、~/.config/autokey/dataまで移動し、そこで新しいディレクトリを作成します。フォルダ作成のアイコンをクリックすると、フォルダ名を入力するフォームが表示されるので、適当な名前を入力します。ここでは、「MySettings」としました。

フォルダ名を入力してEnterを押下すると、以下のように設定が変更された旨と、AutoKeyの設定ウィンドウを一度閉じて再度開かないと反映されない旨が表示されます。

指示通りにAutoKeyの設定ウィンドウを閉じて再度autokey -cを実行して開きます。すると以下のように作成したフォルダが追加されています。

このフォルダに自身の設定を追加していきます。

AutoKeyにフレーズを追加する

事前に割り当てたテキスト文を自動置換するため対象となるフレーズを登録します。まず以下のように「Phrase」をクリックします。

するとフレーズ名を入力するフォームが表示されるので、適当な名前を入力して「OK」をクリックします。ここでは「New Phrase」のままにします。

以下のようにフレーズが追加されるので、ここで設定を行っていきます。

例として、testautoという適当なフレーズを自動で置換したい内容という適当なテキスト文に置換するよう設定してみます。この設定には、以下のように①、②、③を設定します。

①、②、③の設定内容は以下のようになっています。

項目内容
① 置換する内容ここに特定のフレーズを検出したら自動で置換させたい内容を記述します。
② 置換を何で行うか置換をCtrl + Vとして実行するか、もしくはキーボード入力として実行するかなどを指定します。基本的にはCtrl + Vを指定していればOKだと思います。
③ 置換対象とするフレーズ置換対象としたいフレーズを登録します。この登録方法は後述します。

③について補足します。

③ 置換対象とするフレーズについての補足

置換対象とするフレーズを設定するには、以下の画像にあるように「Set」をクリックします。

「Set」をクリックすると、以下のようにフレーズに関する設定ウィンドウが開きます。

ここで、まず「追加」をクリックして適当なフレーズ(ここでは、testauto)を入力してEnterを押下します。

フレーズを入力した後に必ずEnterを押下しないと登録されません。また、セレクトボックスとチェックボックスが並んでいますが、これらの内容は以下です。

項目内容
Trigger onデフォルトの「All non-word」だと文字以外のキーいずれでも置換をトリガします。例えば、testautoと入力してEnter、スペース、Tabなどいずれを入力した時点で置換します。
Remove typed abbreviationチェックを入れると、置換対象のフレーズを削除して置換します。チェックを外すと、置換対象のフレーズを残したまま置換後のテキスト文を貼り付けます。
Omit trigger characterチェックを入れると、トリガとなるキー入力を削除します。例えば、フレーズを入力してスペースを押下した時点で置換する場合、スペース入力を削除します。チェックを入れない場合はスペース入力を残します。
Match phrase case to typed abbreviationこの機能は置換する内容が英語の場合に有効となります。チェックを入れると大文字小文字を置換対象のフレーズと合わせます。これにチェックを入れると下の「Ignore case of typed Abbreviation」も自動でチェックされます。
Ignore case of typed Abbreviationチェックを入れると大文字小文字を区別しません。
Trigger when typed as part of a wordチェックを入れると単語の一部としてフレーズが使用された場合でも置換します。例えばフレーズがtestautoの場合にabctestautoと入力しても置換します。
Trigger immediately (don’t require a trigger character)チェックを入れるとフレーズを検出した時点で即座に置換します。Enterやスペースなどを押下せずとも自動置換します。

上記の設定は、実際にチェックボックスを入れたり外したりしてみて試すと分かると思います。設定が完了したら「OK」をクリックします。

設定を保存する

設定が終わったら、必ず以下にあるように「Save」をクリックします。「Save」をクリックしないと設定が保存されず反映されません。

この状態で、試しに適当なテキストエディタでtestautoと入力してEnterやスペースキーを押下してみてください。冒頭のGIF画像のように置換したい内容というテキスト文に置換されると思います。
何も起きない場合は、以下のコマンドでAutoKeyを起動してみてください。&はバックグランド起動のためです。

$ autokey &

AutoKeyでショートカットキーにスクリプト実行を割り当てる

以下のように「新規」→「Script」をクリックします。

適当なスクリプト名を入力して「OK」をクリックします。

後はフレーズを割り当てた場合と同じように設定します。例えば、以下はCtrl + 上矢印キーkeyboard.send_key('<home>',repeat=1)という内容のスクリプトの実行に割り当てます。設定後は忘れずに「Save」をクリックします。

上記のスクリプト内容である以下は「Homeキーを1度だけ押下する」という内容です。すなわち、Ctrl + 上矢印キーというショートカットキーをHomeキーに割り当てています。

keyboard.send_key('<home>',repeat=1)

これは例として載せましたが、スクリプトとしてもっと複雑な実用的なものももちろん割り当て可能です。例えば、何かファイルを新規作成したりウィンドウを移動したりなど色々とできそうです。詳しくは以下の公式APIドキュメントを見てみてください。

API Examples

The API examples shown here are for AutoKey-GTK. The examples show how to use the various API calls that AutoKey provides.

まとめ

Linuxの設定だけではどうしても難しいショートカットキーの割り当てなども、AutoKeyを使用すればおそらく問題なく実現できると思います。インストールも特に難しくなく、色々な応用ができそうです。

SPONSORED LINK

コメントを残す

メールアドレスが公開されることはありません。