Firefox:Emacsスタイルのキーボードショートカット、およびマウスの中ボタンをクリックしてクリップボードの内容を読み込む

Unixの日常生活でより快適で便利に使用するためのFirefoxの2つのレシピ「料理」をhabrosocietyと共有したいと思います。

FreeBSDでのFirefoxのバージョンについてです。 ただし、以下で説明するすべては、Linuxのバージョンに非常に適用可能です。 Windowsの場合、すべてがそれほど単純ではなく、他の方法で解決できます。

FirefoxでEmacsスタイルのキーボードショートカットを「埋め込む」方法と、リンクのように見えるもの( http://プレフィックスなど)だけでなく、マウスのミドルクリックでFirefoxコンテンツを読み込む方法について説明します。 。

トピックが興味深い場合は、猫の下でお願いします。

だから。 さまざまな理由でシェル(特にbash)を使用している私たちはそれぞれ、おそらくEmacsスタイルのキーバインドに精通しています。 例:
Ctrl-a:行の先頭に移動します
Ctrl-e:行末に移動
Ctrl-u:行の先頭まで削除
Ctrl-k:行末まで削除


私はこれらのキーボードショートカットの使用に慣れているため、他のプログラムで頻繁に使用しようとしています。 特に、Firefoxで。 ただし、これは予期しない結果につながります。 たとえば、「Ctrl-w」の組み合わせは、カーソルの前の単語を削除する代わりに、単に現在のタブを閉じます。

むかしむかし、私はこの状況にうんざりしていて、 MozillaZineの広大さに見られる方法を使いました。 それ以来、Firefoxのすべてのアップデートでこのソリューションを使用しています。 以下に一連のアクションを説明します。

まず、Firefoxをインストールする必要があります。 FreeBSDでは、portsコレクション( ports / www / firefox )からインストールできます。 次に、 toolkit.jarファイルを取得する必要があります。 デフォルトでは、FreeBSDでは、 / usr / local / lib / firefox / chrome /ディレクトリにインストールされます。 次に、それを開梱する必要があります。 これを行うには、JDK配信のjarユーティリティ、 fastjarユーティリティ( ports / archivers / fastjar )、または通常のunzipを使用します。

mkdir /tmp/firefox/ && cd /tmp/firefox/ && cp /usr/local/lib/firefox/chrome/toolkit.jar /tmp/firefox/ && fastjar -xf toolkit.jar

アーカイブの内容が現在のディレクトリに解凍されます。 次に、次をcontent / global / platformHTMLBindings.xmlファイルに追加します。

1)<binding id = "inputFields">の<handlers>セクションへ
 <!-- Emacsish single-line motion and delete keys --> <handler event="keypress" key="a" modifiers="control" command="cmd_beginLine"/> <handler event="keypress" key="e" modifiers="control" command="cmd_endLine"/> <handler event="keypress" key="b" modifiers="control" command="cmd_charPrevious"/> <handler event="keypress" key="f" modifiers="control" command="cmd_charNext"/> <handler event="keypress" key="h" modifiers="control" command="cmd_deleteCharBackward"/> <handler event="keypress" key="d" modifiers="control" command="cmd_deleteCharForward"/> <handler event="keypress" key="w" modifiers="control" command="cmd_deleteWordBackward"/> <handler event="keypress" key="u" modifiers="control" command="cmd_deleteToBeginningOfLine"/> <handler event="keypress" key="k" modifiers="control" command="cmd_deleteToEndOfLine"/> 


2)<binding id = "textAreas">および<binding id = "editor">セクションの<handlers>セクション
 <!-- Emacsish single-line motion and delete keys --> <handler event="keypress" key="a" modifiers="control" command="cmd_beginLine"/> <handler event="keypress" key="e" modifiers="control" command="cmd_endLine"/> <handler event="keypress" id="key_left" key="b" modifiers="control" command="cmd_charPrevious"/> <handler event="keypress" id="key_right" key="f" modifiers="control" command="cmd_charNext"/> <handler event="keypress" id="key_delback" key="h" modifiers="control" command="cmd_deleteCharBackward"/> <handler event="keypress" id="key_delforw" key="d" modifiers="control" command="cmd_deleteCharForward"/> <handler event="keypress" id="key_delwback" key="w" modifiers="control" command="cmd_deleteWordBackward"/> <handler event="keypress" id="key_del_bol" key="u" modifiers="control" command="cmd_deleteToBeginningOfLine"/> <handler event="keypress" id="key_del_eol" key="k" modifiers="control" command="cmd_deleteToEndOfLine"/> <!-- Emacsish multi-line motion and delete keys --> <handler event="keypress" id="key_linedown" key="n" modifiers="control" command="cmd_lineNext"/> <handler event="keypress" id="key_lineup" key="p" modifiers="control" command="cmd_linePrevious"/> 


その後、アーカイブをfastjar -cf toolkit.jar */戻します: " fastjar -cf toolkit.jar */ "(または " zip -r "を使用)。 そして、ソースディレクトリに移動します。

mv toolkit.jar /usr/local/lib/firefox/chrome/toolkit.jar

これにはルート権限が必要です。 また、もちろん、 toolkit.jarファイル最初にバックアップする必要があります。
Firefoxを再起動し、ブラウザーのアドレスバーを含むすべてのテキストフィールドにEmacsスタイルのキーボードショートカットが表示されるようにします。
Firefoxの新しいバージョンがリリースされるたびにcontent / global / platformHTMLBindings.xmlファイルの内容を掘り下げないように、これらの変更をパッチでラップしました。

続けましょう。 Firefoxの4番目のバージョンから、マウスの中ボタンをクリックすることで、このリンクに対応するプレフィックス( http://など)がない場合、ブラウザーがクリップボードからリンクをダウンロードしようとすることはなくなりました。 つまり、たとえば、Webサーバーのログから、仮想ホストの名前をコピーしてブラウザーでそのWebサイトを見る場合、ブラウザーウィンドウの通常の中央クリックの代わりに、アドレスバーにカーソルを置き、そこにコンテンツを貼り付ける必要がありますクリップボードとEnterキーを押します。 控えめに言っても、この革新は私を非常に落胆させ、ウェブ上のソリューションを探すことに再び向きを変えました。 そして解決策が見つかりました。 これには、上記の方法と同じ手順が含まれます。 編集するファイルのみが異なります。 ディレクトリ/ usr / local / lib / firefox / chrome /からbrowser.jarファイルを取得し、バックアップして展開します。 さらに、ファイルコンテンツ/ browser / browser.jsで次のブロックを見つけます。

  try { makeURI(url); } catch (ex) { // Not a valid URI. return; } 


そして、これに置き換えます:

  var URIFixup = Components.classes["@mozilla.org/docshell/urifixup;1"] .getService(Components.interfaces.nsIURIFixup); url = URIFixup.createFixupURI(url, 1).spec; // 1 is FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP 


新しく作成したbrowser.jarを保存し、パックバックして、 / usr / local / lib / firefox / chrome /ディレクトリに戻します。 ブラウザを再起動し、 about:configcontentLoadURLオプションがtrueであることを確認し、結果を楽しんでください:マウスの中ボタンをクリックすると、ブラウザは、リンクと見なされるコンテンツだけでなく、クリップボードからコンテンツをロードしようとします。

前の方法については、 適切なパッチを使用することもできます。

どちらの方法も長い間使用されており、最近リリースされたFF 10.0ですでにパフォーマンスがテストされています。
このアプローチのマイナス点:Firefoxを更新するたびにパッチを適用する必要があります。

この記事がお役に立てば、あなたのお気に入りのブラウザで作業することで、誰かにさらに満足と楽しみをもたらすことを願っています。

この記事では次の資料が使用されました。
1. Emacsキーバインド-Firefox (MozillaZine)。
2. Firefox 4:middlemouse.contentのロードを修正し、jar (ShallowSky.com) をハッキングします

Source: https://habr.com/ru/post/J137485/


All Articles