2023年10月28日土曜日

Acrobat文書を読みやすく

UbuntuでAcrobat文書を読む場合、Evinceを使う。
Acrobatのようにリッチな機能はないが、「メモ」や「テキストのハイライト」はある。

私のマウスには、普通のボタンの他に、「進む」「戻る」ボタンもついている。
Ubuntuでもブラウジング時「戻る」ボタンが使える。
何か新しいことを調べている時、ハードウエアの資料を読んでいる時、文書内を行ったり来たりする。
前のページに戻りたいときに、親指で「ぷちっ」とやれば戻れるのはすごく便利だ。

Acrobat文書も目次や索引など、リンク機能を持つものがある。
そして、Evinceも(もちろんAcrobat Readerも)この「親指戻し」が使える。
使っているうちに癖になり、「親指戻し」が普通になる。

先日、ずっと使ってきたマウスの左ボタンの調子が悪くなった。
強く押せば反応するが、使っているとだんだんイライラしてくる。
あまりにもイライラしてきたので、大宮のビックカメラでマウスを買ってきた。
省電力で電池長持ちをうたっているものを買ってきた。

ところが、その新しいマウスには「進む」「戻る」ボタンがなかった。
ブラウジングもAcrobat文書も、行ったり来たりが面倒になった。

WindowsのAcrobat Readerでは、キーボードから<Alt>← を入力しても「戻る」になる。
しかしながらEvinceでは、<Alt>p 「履歴の前ページへ移動する」、<Alt>n 「履歴の次ページへ移動する」である。
これでもいいのだが、なんとも使いにくい。

このページで、ショートカットを書き換える方法が紹介されている。
しかし、「進む」「戻る」には使えない。

これはメニューが提供している機能にショートカットを結びつけるものだ。
Evinceの結び付けるべき機能「履歴の前ページへ移動する」がメニュー内にない。仮にメニュー外の機能にショートカットを結び付けることができたとしても、どのようにその機能を指定すればいいかわからない。

こうなったら最後の手段、ソースパッケージを得て改造する。

以下はUbuntu22.04でのやり方。
まず、ソースパッケージを得る。サブディレクトリを作ってその中で作業する。
$ mkdir evince
$ cd evince
$ apt-get source evince
これは普通のユーザ(sudoしない)で実行する。

次にビルド依存物を得る。
$ sudo apt-get build-dep evince
これはsudoで実行。たぶん数十個のパッケージが入る。

必要な部分を書き換える。
aptでソースパッケージをダウンロードすると、ソースコードが展開された状態(dpkg-source -x xxxx.dscを実行した状態)になっている。
展開されたサブディレクトリに移る。
$ ls
evince-42.3                         evince_42.3-0ubuntu3.dsc
evince_42.3-0ubuntu3.debian.tar.xz  evince_42.3.orig.tar.xz
$ cd evince-42.3/
$
書き換えるファイルは、"shell/ev-application.c" だ。
自分の好みのエディタで開いて、関数ev_application_startup() の配列変数 action_accels[] の初期化部分の、967行付近、"win.go-next-page"の行を書き換える。
"<Alt>Left" を割り当てたかったが、なぜか無視されてしまう(Ubuntuだから?)。

次善の策として、"<Alt>BackSpace" とした。
   943	static void
   944	ev_application_startup (GApplication *gapplication)
   945	{
   946	        const gchar *action_accels[] = {
   947	          "win.open",                   "<Ctrl>O", NULL,
   948	          "win.open-copy",              "<Ctrl>N", NULL,
   949	          "win.save-as",                "<Ctrl>S", NULL,
   950	          "win.print",                  "<Ctrl>P", NULL,
   951	          "win.show-properties",        "<alt>Return", NULL,
   952	          "win.copy",                   "<Ctrl>C", "<Ctrl>Insert", NULL,
   953	          "win.select-all",             "<Ctrl>A", NULL,
   954	          "win.save-settings",          "<Ctrl>T", NULL,
   955	          "win.add-bookmark",           "<Ctrl>D", NULL,
   956	          "win.delete-bookmark",        "<Ctrl><Shift>D", NULL,
   957	          "win.close",                  "<Ctrl>W", NULL,
   958	          "win.escape",                 "Escape", NULL,
   959	          "win.find",                   "<Ctrl>F", "slash", "KP_Divide", NULL,
   960	          "win.find-next",              "<Ctrl>G", "F3", NULL,
   961	          "win.find-previous",          "<Ctrl><Shift>G", "<Shift>F3", NULL,
   962	          "win.select-page",            "<Ctrl>L", NULL,
   963	          "win.go-backwards",           "<Shift>Page_Up", NULL,
   964	          "win.go-forward",             "<Shift>Page_Down", NULL,
   965	          "win.go-next-page",           "n", "<Ctrl>Page_Down", NULL,
   966	          "win.go-previous-page",       "p", "<Ctrl>Page_Up", NULL,
   967	          "win.go-back-history",        "<alt>P", "Back", "<alt>BackSpace", NULL,
   968	          "win.go-forward-history",     "<alt>N", "Forward", NULL,
   969	          "win.sizing-mode::fit-page",  "f", NULL,
  : (省略)
書き換えたら、保存してエディタを終了。

ビルドするパッケージのバージョンを上げておくために、"dch -i"を実行しておく。
実行しようとすると…
$ dch -i
dch warning: neither DEBEMAIL nor EMAIL environment variable is set
dch warning: building email address from username and FQDN
dch: Did you see those 2 warnings?  Press RETURN to continue...
とりあえず、ここではリターンキーを入力して、次へ進める(書いてあることは読んでね)。
すると、エディタが起動して、更新のメモの入力が促される。
一応、私は”Add shortcut key <alt>BackSpace to "win.go-next-page".”と入力したが、わかれば何でもいい。
evince (42.3-0ubuntu4) UNRELEASED; urgency=medium

  * Add shortcut key <alt>BackSpace to "win.go-next-page".

 -- Shin IWASAKI <shin@xxxxxxxx>  Sat, 28 Oct 2023 10:19:08 +0900

evince (42.3-0ubuntu3) jammy; urgency=medium
 : (省略)
修正したので、ビルドする。
自分で使うだけなら、ソースパッケージを作りなおす必要はないだろう。
バイナリパッケージだけ作成する。
$ dpkg-buildpackage -us -uc -b
色々表示される。しばらく待っているとビルドが終わる。

ビルドが終わったら、サブディレクトリ"evince-42.3/"から抜ける。
ソースパッケージを取得したディレクトリ内に、バイナリパッケージができている。
$ cd ../
$ ls
evince-42.3
evince-common_42.3-0ubuntu4_all.deb
evince-dbgsym_42.3-0ubuntu4_amd64.ddeb
evince_42.3-0ubuntu3.debian.tar.xz
evince_42.3-0ubuntu3.dsc
evince_42.3-0ubuntu4_amd64.buildinfo
evince_42.3-0ubuntu4_amd64.changes
evince_42.3-0ubuntu4_amd64.deb
evince_42.3.orig.tar.xz
gir1.2-evince-3.0_42.3-0ubuntu4_amd64.deb
libevdocument3-4-dbgsym_42.3-0ubuntu4_amd64.ddeb
libevdocument3-4_42.3-0ubuntu4_amd64.deb
libevince-dev_42.3-0ubuntu4_amd64.deb
libevview3-3-dbgsym_42.3-0ubuntu4_amd64.ddeb
libevview3-3_42.3-0ubuntu4_amd64.deb
複数のバイナリパッケージができている。すべてインストールする。
$ sudo dpkg -i *.deb

これで、<Alt>BackSpace でも、「戻る」機能が動作する。

実際に使ってみると…使いにくい!
リンクをクリックする時マウスを握っているのに、戻るためにはキーボードに手を移動させる。
この動作が面倒なのだ。
ブラウザ画面上の「←」ボタンを押すのも面倒な人には、マウスから手を離すのも面倒なのだ。

結局「戻る」ボタンありのマウスを、また用意した。
省電力マウスも、ショートカットの書き換え方法調査も、ショートカットの改造も、すべて無駄だった。

ひさびさに暴走機関車。2万回転の空回り。
とりあえず、改造したまま使いつづける。
色々調べたので、得られたものも多い(記事には書いてないけど)。それだけでも良いか。

0 件のコメント:

コメントを投稿