2009年03月09日

PRIMARYとCLIPBOARD

XのクリップボードにはPRIMARYとSECONDARYとCLIPBOARDがあることは知っていたのだが
使えるようにするには単に先日のコードのXA_PRIMARYを変えてやればいいだけだった。
しかしwindows的クリップボードはカットバッファと呼ばれるものでGTK系のアプリでは使っていない。
Xのユーティリティでxclipいうのがあったのでそれで動作確認した。
使っているプログラムがないのだがXA_SECONDARYはXA_PRIMARYと同じに使えるようだ。

アプリのクリップボードを使う場合はヘッダーとして


#include <X11/Xmu/Atoms.h>


そしてビルド時には「-lX11」の他 「-lXmu」も必要

クリップボードとやりとりしようとして「XA_CLIPBOARD」を指定したら
そんな宣言は初めてだと言われた。インクルードを増やしたりパスを増やしてもだめ
挙句の果てに/usr/local/include/X11以下をgrep -rl "XA_CLIPBOARD"としたら
includeしているX11/Xmu/Atoms.hだけだった。

開いてみるとXA_CLIPBOARDはマクロで
XA_PRIMARYと書いたところをXA_CLIPBOARD(dpy)とすればいいだけだった。
つまり先日とその前のものがそのままつかえる。

xtermはPRIMARYとカットバッファと呼ばれるものだけ(選択すると送られる。使っている。

アプリが終了するとクリップボードがクリアされるのは送信要求の来たものだけ送っている
「アプリ間通信」に即したものだと思うが

xclipで
start
cat a.txt | xclip -selection clipboard

とするとclipboardにデータが送られそれが保持されるのが不可解でソースをみてもまだ消化できていない。
※クリアイベントがくるまでforkしたプロセスが残る様だ。

とりあえず

xclip -selection primary -o|xclip -selection clipboard



xclip -selection clipboard -o|xclip -selection primary

で事が済むしアプリへの実装も理解したしGTKでもかまわないので
ユーザー間通信であるセレクションをせき止めてしまうようなモニターはまずいが
GTKなどクリップボードは「コピー・ペースト」で使い
PRIMARYはテキストの選択で使うと決めうちでありSECONDARYだけがある意味通信として使えそうで
どう使いたいか決めてからこの続きをやろうとおもった。


posted by Xo_ox at 22:50| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。