BlenderはテキストをWMクリップボードにコピーできません。どうすれば解決できますか?

BlenderはテキストをWMクリップボードにコピーできません。どうすれば解決できますか?

元の質問:LinuxのBlender v2.93.4でテキスト/数値フィールドの値をクリップボードにコピーする方法は?https://blender.stackexchange.com/questions/239139/how-to-copy-a-text-numeric-field-value-to-clipboard-on-linux-for-blender-v2-93-4

ブレンダーを開き、
キューブをクリックすると
変換が表示されます。

クリックし、マウスが選択した数字「5」の上にあるときにCtrl + Cキーを押しながらTabキーを押します(Yフィールドに移動します)。 、ctrl + vを押しましたが、クリップボードの以前の内容が「5m」の代わりに貼り付けられています!試してみると「5」もできません!



マウスの移動、F5などの「text.copy」操作に複数のキーマップ(ctrl + c ctrl + insertに加えて)を追加しましたが、問題はBlenderがXクリップボードに何も送信できないようです。

端末やブレンダーに情報をダンプする方法を見つけようとしていますが、正確にこれを行う方法を見つけることができません。
Blenderを実行すると、blender --log "*undo*"役に立ちますが、十分ではない正確な合計値「2.12345」ではなく、「2.12m」などの不正確にマークされた値がダンプされます。
正確に記録できる場合は、表示された値を正確に表示できる場合は正常に動作する可能性があります。

これを可能にする他のトリックを考えることができますか?

gcore ... |stringsそこに入力した「プレーンテキスト」の数だけ(テキストを選択した状態で3回、テキストを選択しない状態で1回)見つけることができますが、近くには選択したテキストに対する手がかり/ヒント/フックとして使用できる定数テキストがありません。おそらく16進数で何かがありますか?

私の考えでは、これはPythonのバグかもしれません。しかし、Blenderコードのどこにあるのかを見つけることができませんでした。

Blender 2.93.4 Ubuntu 20.04

関連:https://blender.stackexchange.com/questions/124294/clipboard-not-working-on-ubuntu-18-04-in-blender-2-79bしかし、何も役に立ちません。

答え1

これは関連する質問ですparcellite
Blender と Parcellite を互換性のあるものにするには、Parcelellite の「クリップボード/コピーの使用 (Ctrl+C)」オプションを無効にし、「デフォルト (選択)」でのみ動作するようにする必要があります。


古い過剰回答:

次のスクリプトは何をしますか?

  • マウス選択でスクリーンショットを撮ります。
  • 光学文字認識、
  • クリップボードに送信
  • または失敗を報告してください。

完全に過剰ですが、他のアプリケーションでも機能する可能性があります。

cat >copyThruOCR.sh

#!/bin/bash

echo "HELP:"
echo "depends on: scrot, tesseract, yad, xterm"
echo "bind this script to ex.: Alt+C using xbindkeys-config (remember to run xbindkeys just after)"
echo "use dark mode for best contrast on the application, so ex.: clicking the the field in blender will make it black background and white text!"
echo "tip: select more to the left than the limit of the text/number, works better"
echo "tip: select just below the text/number, if it is too much below it may just fail"
echo "it may still fail sometimes..."

set -x
FUNC() {
  strFl="/tmp/`basename $0`.png";
  rm "$strFl" "$strFl.txt"
  bFail=false
  str=""
  strP=""
  fSleep=0.25
  iScrotRetryMax=8; # 2s
  for((iScrotRetry=0;iScrotRetry<iScrotRetryMax;iScrotRetry++));do
    if scrot -s "${strFl}";then break;fi
    
    declare -p iScrotRetry
    sleep $fSleep;
  done
  if [[ -f "${strFl}" ]];then
#    if tesseract --dpi 300 --psm 8 "${strFl}" "$strFl";then
#    if tesseract --dpi 300 "${strFl}" "$strFl";then
    if tesseract --psm 6 "${strFl}" "$strFl" -c tessedit_char_whitelist="+-.0123456789" >/dev/null 2>&1;then
      str="$(head -n 1 "${strFl}.txt")" #1st line
      str="$(echo "$str" |cut -d " " -f1)" #1st word/column
      str="$(echo "$str" |tr -d "\r\n ")" #remove anything invalid
      
      echo "RESULT:"
      echo "$str"

      echo   
      echo "TextFile:"   
      cat "${strFl}.txt"   
      echo
      
      if [[ -z "`echo -n "${str}" |tr -d '[:digit:].+-'`" ]];then #COMMENT this number check if you prefer everything
        echo "COPYING TO CLIPBOARD: '${str}'"    
        echo -n "$str" |xclip -i -selection primary -rmlastnl;   
        echo -n "$str" |xclip -i -selection secondary -rmlastnl;   
        echo -n "$str" |xclip -i -selection clipboard -rmlastnl;   
      else
        strP="PROBLEM: not a number"
        bFail=true
      fi
    else
      strP="PROBLEM: tesseract fail"
      bFail=true
    fi
  else
    strP="PROBLEM: scrot fail"
    bFail=true
  fi
  
  echo "$strP"
  if $bFail;then yad --geometry=100x50+0+0 --title "`basename $0` FAILED" --text "$strP. '$str'" --timeout 1 --ontop --center;fi #COMMENT to get no warning

  read -p "press a key to exit (2s)..." -t 2 -n 1
};export -f FUNC;

xterm -geom 50x100+0+0 -e bash -c FUNC;exit #COMMENT to not show terminal log
FUNC

改善できる場合(より安定したものにするために)あなたのヒントを残してください!
マウス位置の周りの四角形を自動的につかみたいです。問題は、OCRが正しく機能するように不要な内容を消去する方法です。

関連情報