web-dev-qa-db-ja.com

クリップボードのコピー/貼り付けイベントを検出し、クリップボードの内容を変更する

何かがクリップボードにコピーされた後(ctrl + cを使用)、スクリプト(bash、pythonまたはその他の言語)で、新しいエントリがクリップボードに追加されたことを自動的に検出し、コンテンツを変更して配置します貼り付けると、変更されたテキストが表示されます。スクリプトは常にバックグラウンドで実行され、クリップボードの変更を監視する必要があります。

次のスクリプトは、必要な変更について説明しています。
出典: https://superuser.com/questions/796292/is-there-an-efficient-way-to-copy-text-from-a-pdf-without-the-line -breaks

#!/bin/bash

# title: copy_without_linebreaks
# author: Glutanimate (github.com/glutanimate)
# license: MIT license

# Parses currently selected text and removes 
# newlines that aren't preceded by a full stop

SelectedText="$(xsel)"

ModifiedText="$(echo "$SelectedText" | \
    sed 's/\.$/.|/g' | sed 's/^\s*$/|/g' | tr '\n' ' ' | tr '|' '\n')"

#   - first sed command: replace end-of-line full stops with '|' delimiter and keep original periods.
#   - second sed command: replace empty lines with same delimiter (e.g.
#     to separate text headings from text)
#   - subsequent tr commands: remove existing newlines; replace delimiter with
#     newlines
# This is less than elegant but it works.

echo "$ModifiedText" | xsel -bi

ショートカットキーバインドを使用してスクリプトを実行したくない

3
SidMan

クレジットは ケン に送られます。

スクリプトを要件に合わせて変更し、クリップボードのコピーイベントを検出してその内容を変更する機能を追加しました。

ソース: https://github.com/SidMan2001/Scripts/tree/master/PDF-Copy-without-Linebreaks-Linux

PDF(Linux)からテキストをコピーするときに改行を削除する:

このbashスクリプトは、PDFからテキストをコピーするときに改行を削除します。 Linuxのプライマリ選択とクリップボードの両方で動作します。


#!/bin/bash

# title: copy_without_linebreaks
# author: Glutanimate (github.com/glutanimate)
# modifier: Siddharth (github.com/SidMan2001)
# license: MIT license

# Parses currently selected text and removes 
# newlines

while ./clipnotify;
do
  SelectedText="$(xsel)"
  CopiedText="$(xsel -b)"
  if [[ $SelectedText != *"file:///"* ]]; then
    ModifiedTextPrimary="$(echo "$SelectedText" | tr -s '\n' ' ')"
    echo -n "$ModifiedTextPrimary" | xsel -i
  fi
  if [[ $CopiedText != *"file:///"* ]]; then
    ModifiedTextClipboard="$(echo "$CopiedText" | tr -s '\n' ' '  )"
    echo -n "$ModifiedTextClipboard" | xsel -bi
  fi
done

依存関係:

  1. xsel
    Sudo apt-get install xsel
  2. クリップ通知( https://github.com/cdown/clipnotify
    リポジトリで提供される事前コンパイルされたclipnotifyを使用するか、自分でコンパイルできます。

clipnotifyをコンパイルするには:
Sudo apt install git build-essential libx11-dev libxtst-dev
git clone https://github.com/cdown/clipnotify.git
cd clipnotify
Sudo make

使用するには:

  1. このリポジトリをZipとしてダウンロードするか、スクリプトをコピーしてテキストエディタに貼り付け、copy_without_linebreaks.shとして保存します。
  2. スクリプトとclipnotify(ダウンロードまたはプリコンパイル済み)が同じフォルダーにあることを確認してください。
  3. スクリプトのフォルダーでターミナルを開き、権限を設定します
    chmod +x "copy_without_linebreaks.sh"
  4. スクリプトをダブルクリックするか、ターミナルに入力して実行します。
    .\copy_without_linebreaks.sh
  5. PDFのテキストをコピーして任意の場所に貼り付けます。改行は削除されます。
3
SidMan