WPS Office for Linux でMenuキーでコンテキストメニューを表示させる

Windowsでメニューキーを押すと右クリックで表示されるメニュー(コンテキストメニュー)が表示されるというのが刷り込まれているのですが,現在のLinuxの環境ではメニューキーを押してもコンテキストメニューが出てこないアプリケーションが。

ちなみに,Arch Linux + Openbox です。

それで不便を感じていた筆頭格がWPS Writer. 段落設定のダイアログを出そうと右クリックするのですが,クリックの勢いでマウスが動いてしまうみたいで,ときに何度右クリックしてもさくっと表示されなくてイライラすることもありました。

メニューキーを押せばコンテキストメニューがでるよね!と押してみても無反応・・・。まじか・・・。そして,WPS Writerにはショートカットキーをカスタマイズする機能はないみたいでした。

xdotool

それで,次に考えたのが,メニューキーを押したら右クリックしたことにしたらいいんでない?ということで探しだしたのが,xdotoolコマンドラインからマウスやキー入力をエミュレーションするツールです。ターミナルで

xdotool click 3

を実行してみると,ポインター位置で右クリックしたのと同じ挙動がっ!!素晴らしい!!アプリケーションのウィンドウ内でやるとコンテキストメニューが出るし,後はこれをOpenboxのホットキーを割り当てればいいのだ!!

obhotkey

というわけで,Openboxのドキュメントを読んでみると,どうもホットキーを割り当てることができるのは予めOpenboxが用意したActionだけで,コマンドの実行は割り当てられないらしい。

Creating hotkeys from the command line

OBHotkey lets you add/remove key bindings from the command line.

ってなってて,このOBHotkeyというツールが必要らしい。AURでobhotkeyを検索してみると,ヒットせず。OBHokeyのページからダウンロードしてみると,中身はPythonスクリプトで,最終更新が2010年でもう12年も前じゃないかっ!!

こういうのを手動でインストールするのが嫌だったのだけど,仕方がない。

READMEを見ながら,まず,依存関係で必要なpython-xlibをPacmanで探してインストール。PyGTK2はobhktrayのために必要とあり,ようわからんがトレーにイてくれなくても構わないので,スルー。

READMEにしたがって

sudo python setup.py install

と回答してできたディレクトリでインストールスクリプトを実行すると,なにやらバイトコンパイルでエラーが続出。Pythonのことなどなーんにもしらないのだけど,エラーメッセージを読むとprint文?コマンド?は引数?はカッコでくくる必要があるってのと,try-catch文?のexcept文?もカッコでくくらんといかで,とにかくエラーが出るとメッセージにしたがって,それと思われるソースファイルの該当箇所を修正して保存を繰り返し,インストール時にエラーが出なくなった後は,obhotkey -hを実行。今度は実行時エラーが同じように出るので,同じように修正してはインストールスクリプトの実行を繰り替えし,最終的にヘルプが表示されました!!めでたし,めでたし。

エラーが出なくなったので,ヘルプにしたがって,

obhotkey Menu "xdotool click 3"

を実行。直後にメニューキーを押してみたら,わお!出たよ!コンテキストメニュー。デスクトップ上にポインタを持っていってメニューキーを押すと,Openboxのメニューが出た。たまらん。

WPS Writer上でクリックすると,コンテキストメニュー,でた〜。

そんなあやしいことをしなくてもlxhotkeyでよかった

しかし,lxdeに含まれるlxhotkeyでホットキーのカスタマイズが可能であることが判明。obhotkeyを削除しようとしたのだが,手動でインストールしてるから,アンインストールも面倒です。

ぐぐって見つけたこちらを参考にして無事アンインストールできました。

やっぱり,インストールしたファイルを一つ一つで作業で削除する必要がありました。ほら,だからパッケージではないものをインストールするのはやなんです。ビルドしたディレクトリをとっててよかった〜

もう一度,

python setup.py install --record files.txt

を実行して,再度インストールして,インストールされたファイルをファイルに書き出す。

ファイルの中身は,

/usr/lib/python3.10/site-packages/obhk.py
/usr/lib/python3.10/site-packages/obaxutils.py
/usr/lib/python3.10/site-packages/__pycache__/obhk.cpython-310.pyc
/usr/lib/python3.10/site-packages/__pycache__/obaxutils.cpython-310.pyc
/usr/bin/obhktray
/usr/bin/obhotkey
/usr/share/man/man1/obhotkey.1
/usr/share/man/man1/obhktray.1
/usr/lib/python3.10/site-packages/obhotkey-0.1.0-py3.10.egg-info

と,インストールされたファイルが列挙されていると思われます。

次に

cat files.txt | xargs rm -rf

を実行する。要は,列挙されたファイルを削除するだけですが,場所的に管理者権限が必要なのでもちろん許可がないと弾かれます。

気を取り直して,

cat files.txt | xargs sudo rm -rf

で無事アンインストール完了。