Ctrl+Cでキー割り当てNo.10217
おすぎ さん 23/10/24 11:01
 
お世話様です。

Ctrl+Cでコピーした後、クリップボード値をマクロで使うことを考えています。

コピーとマクロ起動を一度に行うために、Ctrl+Cをマクロ起動に割り当てたいのです
が、そんなことは可能でしょうか?

[ ]
RE:10217 Ctrl+Cでキー割り当てNo.10218
秀丸担当 さん 23/10/24 11:08
 
[その他]→[キー割り当て...]で、Ctrl+Cにマクロを割り当てれば可能ではあります。
少し前に似た話題がありました。
https://www.maruo.co.jp/hidesoft/2/x40499_.html
V9.22より前にうまくいかないケースがありましたが、現在のバージョンでは一応動
くはずになっています。
別件
https://www.maruo.co.jp/hidesoft/2/x39956_.html

マクロの例

setcompatiblemode 0x100000;//複数選択OK
if(getfocus()==1){
  //編集エリア
  copy;
  //(ここに独自処理)
} else {
  //それ以外の各種枠とかの場合は本来の処理へ
  seteventnotify 1;
}


ただCtrl+Cのキー操作はいろんなアプリが奪い合っているというか、一般的でスタン
ダードな動作を前提に考えているみたいなので、他のアプリにとっての前提が崩れる
とおかしなことが起きかねないので、不都合があるかもしれません。
秀丸エディタ内でも場所や条件によって動作が違うので、上記マクロ例のように面倒
なことを考えないといけないです。
もしかしたら気づいていないだけで他にも不都合があるかもしれないです。

最近ではDeepLのCtrl+Cの機能を使う場合、普通にコピーが行われ選択は解除される
という前提で動いているようです。
その場合、秀丸エディタの普通は解除されるので[その他]→[動作環境]→[編集]→
[「コピー」の後に範囲選択を解除する]をON、マクロなら上記copy;をcopy2;にする
必要があります。
ずっと以前にも、Ctrl+Cならば必ずコピーが発生して選択は解除されないだろうとい
う前提で動いているアプリもあったりしました。

[ ]
RE:10218 Ctrl+Cでキー割り当てNo.10219
おすぎ さん 23/10/24 12:09
 
ありがとうございます。

提示していただいたマクロを実行してみたのですが、うまく動きません。
copy してくれません。

もう少しトライしてからまたご報告します。

ありがとうございました。

[ ]
RE:10219 Ctrl+Cでキー割り当てNo.10220
おすぎ さん 23/10/24 14:49
 
原因が分かりました。

私は、秀丸のブラウザ枠上で、Copy を含むマクロを Ctrl+Cに割り当て起動させよう
としていました。

おそらく、ブラウザ枠上では、マクロ中のCopyは機能しないのでしょう。
合ってますか?

[ ]
RE:10220 Ctrl+Cでキー割り当てNo.10221
秀丸担当 さん 23/10/24 16:04
 
ブラウザ枠の上では、秀丸マクロのcopy;やcopy2;は働かないです。

ブラウザ枠に関する操作は、browserpanecommandで行うことになっています。
browserpanecommandで、URLを指定するかのごとく、"https:..."の代わりに"javascr
ipt:..."というURLを指定することで、コンテンツ上の操作ができるという手法が本
来はあります。
でもネット上のコンテンツの場合は、できないようにしています。
できるのは、レンダリング枠か、ブラウザ枠でもローカルのfile:... から始まる
ページを表示させているときだけになっています。

ブラウザ枠でできないようにしているのは、自主的な制限で、できてしまってもいい
ことではあります。
(コピーくらいはできてもいいような、微妙なところではありますが)

[ ]
RE:10221 Ctrl+Cでキー割り当てNo.10222
おすぎ さん 23/10/24 19:56
 
ありがとうございます。

ブラウザ枠は、現状でもとても重宝しています。

[ ]
RE:10222 Ctrl+Cでキー割り当てNo.10223
秀丸担当 さん 23/10/26 17:26
 
コピーについては、できてもよさそうな気がするので、β版でやってみています。
"javascipt:..."のような複雑なURLの記述ではなく、単に
browserpanecommand "copy";
としてできるようにしてみています。

個別ブラウザ枠の場合はあらかじめsetbrowserpanetargetしてから以下のようにしま
す。
setbrowserpanetarget "_each";
browserpanecommand "copy";

[ ]
RE:10223 Ctrl+Cでキー割り当てNo.10224
おすぎ さん 23/10/26 18:41
 
おぉ〜。
よろしくお願いします。


>コピーについては、できてもよさそうな気がするので、β版でやってみています。

[ ]
RE:10224 Ctrl+Cでキー割り当てNo.10253
おすぎ さん 23/11/23 13:51
 
Version 9.26 で ブラウザ枠でコピーした内容を使おうと思い、
試しに次のマクロを組んでみました。Ctrl + E に割り当てました。

browserpanecommand "copy";
beginclipboardread;
message getclipboard();

メッセージを見ると、コピー内容が1行遅れて表示されます。
どうしてでしょうか?

[ ]
RE:10253 Ctrl+Cでキー割り当てNo.10254
秀丸担当 さん 23/11/24 09:23
 
マクロで試してみたところ、同じような感じになりました。
ブラウザのコピーはすぐには終わらないようです。
なんとかするとしたら、いったん空の内容を入れてみて、変化するかどうかで見ると
一応できそうでした。
ただ"copy"は詳細な制御はなくて、単にコピーを実行してるという程度のものなので、
秀丸エディタから見ると実際コピーが行われるかどうかもわからないです。
ブラウザ枠で選択が無いなど、コピーが実行されないとしたら少し固まることになり
ます。

例:
setclipboard "";
browserpanecommand "copy";
$data="";
#tick=tickcount;
while((tickcount-#tick)<3000){//3秒まで待つ
 beginclipboardread;
 $data = getclipboard();
 if($data!="")break;
 sleep 10;
}
message $data;
endmacro;

[ ]
RE:10254 Ctrl+Cでキー割り当てNo.10255
おすぎ さん 23/11/24 10:38
 
ありがとうございます。
ご提示のマクロでうまくいきました。

こちらでも、ちょっと試してみました。
次のマクロ(クリップボードを2回読む)でもうまくいきました。

browserpanecommand "copy";

beginclipboardread;
$data = getclipboard();
sleep 10;

beginclipboardread;
$data = getclipboard();

message $data;
endmacro;


いろいろ試して分かったのですが、
「sleep 10」は必須でした。


勉強になりました。
ありがとうございました。

[ ]
RE:10255 Ctrl+Cでキー割り当てNo.10256
おすぎ さん 23/11/24 12:47
 
もっと試してみたところ、次のマクロでもいけそうでした。
ブラウザのコピーの後に、1ms でも時間を入れれば良かったようです。

browserpanecommand "copy";
sleep 1;
beginclipboardread;
$data = getclipboard();
message $data;

endmacro;

大変勉強になりました。
ありがとうございました。

[ ]
RE:10256 Ctrl+Cでキー割り当てNo.10257
秀丸担当 さん 23/11/24 12:58
 
それだけでよかったのですね。
情報ありがとうございます。

[ ]