webdino / amethyst

Simple WebViewer App for embedded systems (patches for Firefox/Gecko)
https://gecko-embedded.org/docs/webviewer/
5 stars 1 forks source link

WebViewer 終了などのショートカットキーを追加 #45

Closed dynamis closed 3 years ago

dynamis commented 3 years ago

実際の利用時にはキーボードなどからの終了方法は存在してはならないため削除している/実装していないが、試験時には終了ができないと OS 再起動をするしかなくなるケースが存在する (ボード/BSP 側でスクリーン切り替え時にフリーズする問題などがあるとシリアルコンソール経由以外でターミナルに切り替える手段がなくなるなど)。

デフォルトオフだが特定の環境変数が有効になっていると Ctrl+Q (Firefox のブラウザ終了ショートカットキー) と同一のキーで終了が可能になるようにしたい。

WEBVIEWER_ENABLE_QUIT=1 webviewer

Firefox だと終了前の確認とかが実装されてるがこちらは通常提供しない機能かつ試験時にのみ有効化するものなので確認ダイアログの表示などは不要

環境変数名は MOZ_ENABLE_WAYLAND とか NSS_xxx とか GDKxxx に倣って WEBVIEWER xxxじゃなくて WV_xxx と短くしても良いかも。他に使ってる人がいなければ。

dynamis commented 3 years ago

必須ではないがついでに変更すると嬉しい振る舞い:

戻るショートカットキー back の有効無効も環境変数で切り替え可能に (デフォルトオン)

WEBVIEWER_ENABLE_BACK=0 webviewer

browser.startup.homepage prefs 設定のページを起動時及びホームページショートカットキー Alt + Home で読み込む (デフォルトオフ)

WEBVIEWER_ENABLE_HOMEPAGE=1 webviewer

環境変数以外に webviewer.back.enable=true, webviewer.homepage.enable=true, webviewer.quit.enable=false などの prefs での有効無効切り替え (環境変数優先) があると環境変数設定の省略ができて楽

note: ショートカットキー https://support.mozilla.org/ja/kb/keyboard-shortcuts-perform-firefox-tasks-quickly#w_nabigeshiyon

dynamis commented 3 years ago

@NaokiNoguchi 実装方針ですが、browser.js で処理を実装、それを呼び出す commandset/keyset を xul 側で登録するというのが xul 時代のブラウザ実装でした。webviewer はシンプルになってますが firefox もコードを見れば実装は同じと分かるかと思います (xul tutorial とかでも説明があるはず)

https://github.com/webdino/amethyst/blob/33cc4c6aa2f07f3bf5fbb48848596f55de70dffd/FIREFOX_68_1_0esr_RELEASE/webviewer.patch#L56-L58

https://github.com/webdino/amethyst/blob/33cc4c6aa2f07f3bf5fbb48848596f55de70dffd/FIREFOX_68_1_0esr_RELEASE/webviewer.patch#L86-L93

html 化して xul 的流儀は不要になってるのであれば html 側には何もせず browser.js 側でイベントリスナ登録するだけで良いのかも知れません。

そのあたりは @hATrayflood のレビューを受けてくださいませ。

dynamis commented 3 years ago

環境変数の操作は Cc["@mozilla.org/process/environment;1"] っぽいので Fx78 時代の利用例を検索するとこんな感じで出てくるのでこの辺りで環境変数の有無、値を見る方法が分かるかと:

https://searchfox.org/mozilla-esr78/source/browser/components/migration/FirefoxProfileMigrator.jsm#184-192 https://searchfox.org/mozilla-esr78/source/browser/components/attribution/AttributionCode.jsm#192-198 https://searchfox.org/mozilla-esr78/source/browser/components/migration/content/migration.js#43-47

dynamis commented 3 years ago

隠しショートカットキーとして欲しいものを改めて考えてみた。 組込用途で勝手に変えられると不味いケースが主だと思うので以下全てデフォルトオフ。

なお、欲しいことがあるかも知れない機能でもコマンドラインオプションが存在する機能は重複して入れてはならないことに注意 https://developer.mozilla.org/ja/docs/Mozilla/Command_Line_Options この辺りは webviewer デモ動くのか確認した上で https://github.com/webdino/amethyst/wiki/Tips にも記載しておきたい。

dynamis commented 3 years ago

note: backspace = 戻る は Firefox 91 では廃止済みになるため WebViewer 91 では削除が必要になることに注意 (ショートカット表に入ってなかったのはそういうことか) https://www.mozilla.org/en-US/firefox/87.0/releasenotes/

To prevent user data loss when filling out forms, we’ve disabled the Backspace key as a navigation shortcut for the back navigation button. To re-enable the Backspace keyboard shortcut, you can change the about:config preference browser.backspace_action to 0. You can also use the recommended Alt + Left arrow (Command + Left arrow on Mac) shortcut instead.

NaokiNoguchi commented 3 years ago

下記のキーと機能で対応

・Ctrl+home → about:homeを開く ・Ctrl+[,Alt+⇦ →戻る ・Ctrl+],Alt+⇨ →進む ・F5 or Ctrl+R →リロード ・Ctrl+F5 or Ctrl+Shift+R→キャッシュを使わないリロード ・Ctrl + + →拡大 ・Ctrl + - →縮小 ・Ctrl + 0 →リセット ・Ctrl+ , →about:preferences ・Ctrl + . →about:about ・Ctrl + / →about:config ・Ctrl + Q →終了

有効にする場合は objDir/bin/distにて「export WEBVIEWER_ENABLE_HOMEPAGE=1 webviewer」を実行