[ 新規 ] [ 検索 | 一覧 | FrontPage ] [ 履歴 (RSS) | 差分履歴 (RSS) ] [ ログイン ]
【PR】Amazon | SL-C3000 | SL-C1000(3/18発売!) | SL-C860 | SL-6000W | SL-6000L | SL-6000N

qcf

差分表示


編集前の状態に戻します。
*Qtopia Clipboard Filter

Qtopiaのクリップボードを標準入力/標準出力と連携させるためのフィルターです。

1時間程度のやっつけ仕事で作ったのでバグがあるかも?

*使用方法

**クリップボード内容の出力

オプション -w を付けて実行すると、クリップボードの内容を標準出力に書き出します。

 $ qcf -w

またはオプション無し(ただし今後変更される可能性有りなのでオプション付きを推奨)

 $ qcf

Display size = 480x640
の様な出力が標準エラーに出ますが、これはQtopiaアプリケーションの仕様です。

**クリップボードへの読み込み

オプション -r を付けて実行すると、標準入力を読み込み、クリップボードに転送します。

 $ echo "hoge" | qcf -r

*ダウンロード

[[qcf_0.1.0-1_arm.ipk Download:qcf_0.1.0-1_arm.ipk]]

*変更履歴

-0.1.0 2003/05/31
--初版

*ご意見等

ご意見ご要望等がありましたらこちらにどうぞ。

[[#rcomment]]
>hKnSgbIv
 [[#rcomment]]
- 2003-07-02 (Wed) 01:04:22 ''[[塚本牧生]]'' : 天気予報スクリプトで使わせていただきました。便利便利。さて、そろそろいろいろとご指摘いただいているWikiに戻らないと...。
- 2003-06-25 (Wed) 22:35:31 途中で送ってしまった……。どうもおさわがせしました。再起動したら、症状が消えました。
- 2003-06-25 (Wed) 22:34:03 ''[[Unknown]]'' : あら、確かに再起動したら出なくなりました。どうもおさわがせ
- 2003-06-23 (Mon) 22:42:21 ''[[yakty]]'' : C700/C750で試してみましたが、どちらでも問題なく出力出来ました。「SlSharedManager: can't get proc entry」このエラーが出る事自体が多分おかしいんで、一回再起動してみてもらえますか?(多分これシャープのライブラリが出しているエラーだし)
- 2003-06-23 (Mon) 02:28:28 ''[[Unknown]]'' : yaktyさんこん**は。ちょっと不都合な点が出てきました。改行なしの76バイト以下のテキストは、qcf -wで標準出力に出てきません。77バイト以上なら出てきます。また、C760だと文字数にかかわらず、「SlSharedManager: can't get proc entry」というエラーメッセージが出てきてしまいます。つまり、C760の場合、76バイト以下ならエラーメッセージのみが。77バイト以上ならクリップボードの文字列とエラーメッセージが出てきます。改行付きなら1バイトでも大丈夫なんですが。
- 2003-06-23 (Mon) 01:00:07 ''[[Unknown]]'' : Namさん、Emacsで便利に使わせてもらっています。ありがとうございます。Namさんにもう一つお礼を。こんな展開にもなってたりして。http://megadriver.ns.tc/~fumi/zatubun/?date=20030605
- 2003-06-22 (Sun) 23:48:18 ''[[Nam]]'' : 依頼者さん、情報さんくすです。さっそく直しておきます。
- 2003-06-22 (Sun) 23:11:57 ''[[Unknown]]'' : 依頼者です。SL-C760を買ったんですが、このマシンではqcfを起動しても「connect:shmget ok」とは出ないので、NamさんのEmacs連携のコードを手直しする必要がありました。(if (re-search-forward "^connect:shmget ok$" e)を(if (re-search-forward "^Display size = 480x640$" e)とすればOKです。
- 2003-06-11 (Wed) 16:43:37 ''[[FMB]]'' : qkc -m でうまく行きました!早速の対応ありがとうございましたm(_ _)m。 
- 2003-06-11 (Wed) 09:29:07 ''[[yakty]]'' : なんかqkcのオプションに-mを付けた方がいいみたいです。私は使ってないのでよく分からないんですが(笑)
- 2003-06-11 (Wed) 08:41:38 ''[[FMB]]'' : 便利です。有難うございます。NamさんのEmacs連携も早速導入させてもらい、成功しました。でもUnknown(依頼人)さんの「一行野郎」がうまくいきません。NetFrontで選択&コピー、ターミナル上でone liner実行、memoでペースト、とやってみるのですが、改行はもとのままです。qcfとqkcの導入以外に何か条件があるのでしょうか?
- 2003-06-02 (Mon) 19:58:47 ''[[Nam]]'' : 便利なツールをありがとうございます。 EmacsのバッファからClipboardへコピー&Clipboardからバッファへペーストって関数をザックリ書いてみたので宜しければどうぞ。 http://www.rr.iij4u.or.jp/~nam/
- 2003-06-02 (Mon) 00:04:57 ''[[mmo]]'' : MIシリーズの時にClipLinkというソフトを使っていまして、SLシリーズでもできないのかな..と思っているのですが可能なのでしょうか?
- 2003-06-02 (Mon) 00:04:01 ''[[mmo]]'' : はじめまして。こんなソフトを探していました。
- 2003-06-01 (Sun) 19:17:58 ''[[yakty]]'' : へえ、初めて知りました。nkfはもちろん知ってますけどね。
- 2003-06-01 (Sun) 11:38:50 ''[[Unknown]]'' : qkcはQuick Kanji Code Converterですよ。nkf、Network Kanji Filterみたいなもんです。出自はMS-DOSだったと思いました。両方ともここにあります。http://hisec.minidns.net/~masui/feed/ 
- 2003-06-01 (Sun) 00:18:10 ''[[Unknown]]'' : 依頼人です。yaktyさんありがとうございます。より柔軟な活用ができます。
- 2003-06-01 (Sun) 00:15:44 ''[[yakty]]'' : 文字コード変換機能とかも組み込んだ方がいいのかな〜?と思ってるんですが、欲しい方います?多分そんなに大変じゃないんで要望があれば実装します。

*使用例

こうやって使うと便利!という使用方法があれば教えて下さい。

**NetFrontからのコピー時の改行落ちを解決

とりあえず、依頼者さんの使用例をコピペ
(オプション無しの実行は非推奨なので-wオプションを付けさせて頂きました)
qkc のオプションに -m を付けた方がいいようです。

 qcf -w | qkc -m | qcf -r

>さて、早速試した上記のOne liner。 
>自分はNetFrontで探してきた情報をMemoに貼るのですが、 
>改行が落ちるので困っていました。 
>それを解決するためのものです。 

**Emacsのバッファとの連携

私はEmacsを使わないのでよく分からないのですが(^^;なんか便利そう?
↓こちらで使用例を公開されています。
http://www.rr.iij4u.or.jp/~nam/

**q2chで注目レスを引用しつつレス先指定

Unknownです。ども。
q2chで選択範囲を作らずにFn+Cすると、画面上部に表示されているレスからのURLがクリップボードにコピーされます。
これを利用したスクリプトです。その糞っぷりを笑ってください。
qcfのほか、w3m(笑)が必要です。

 #!/bin/sh
 # /home/zaurus/quote.sh
 # keyhelper.confに、
 # Q = @exec<tab>/home/zaurus/quote.sh
 # などと記述するといいかも。
 
 while :
  do
  val=`qcf -w`
  echo ${val} | sed 's/^.*\/\([0-9][0-9]*\)-$/>>\1/'
  echo ${val} |
  sed 's/^\(.*\)-$/-dump \1/' |
  xargs w3m |
  sed -n '6,/^[0-9][0-9]* KB  \[/s/^    \(.*\)$/> \1/p' |
  sed '/^[0-9][0-9]* KB  \[/d'
  exit
 done | qcf -r

***使い方

-q2chでスレを見ている最中にレスしたくなったら Fn+C
-Keyhelper Appletなどでこのスクリプトを起動
-q2chで e などとして書き込みフォーム表示
-Fn+Vでペースト
**天気予報スクリプト

塚本さん作の[[天気予報スクリプト Walrus,Visit.:2003年7月]]で使用して頂いています。

**w3mのリンク先URLをクリップボードにコピー

ども。Unknown です。
以下のようなシェルスクリプトを書き、w3m で o すると出てくる設定画面で外部ブラウザとして指定。

 #!/bin/sh
 echo $@ | qcf -r >/dev/null 2>&1
 # qcop QPE/System 'execute(QString,QString)' netfront3 $@ >/dev/null 2>&1

なおかつ ~/.w3m/keymap に以下のような記述があることを確認。

 keymap  M       EXTERN_LINK
 keymap  M-M     EXTERN

こうしとくと、 w3m でカーソルをリンクに合わせ、 M を押すと、クリップボードにリンク先の URL がコピーされます。
Cancel を押してから M とやると、今見ているページの URL がコピーされます。

上の qcop の前の # を外せば、クリップボードにコピーしつつ、 Netfront でページを開けます。

ふつー emacs-w3m ですかね?
**募集中

**募集中

*ソース

**main.cpp

 #include <getopt.h>
 
 #include <qpe/qpeapplication.h>
 #include <qtimer.h>
 
 #include "ClipFilter.h"
 
 int main(int argc, char* argv[])
 {
     QPEApplication a(argc, argv);
 
     ClipFilter cf;
 
     int c;
     while((c = getopt(argc, argv, ":rw")) != -1){
         switch(c){
         case 'r':
             cf.setMode(ClipFilter::CLIP_READ);
             break;
         case 'w':
             cf.setMode(ClipFilter::CLIP_WRITE);
             break;
         default:
             break;
         }
     }
     
     cf.exec();
 
     QTimer::singleShot(0, &a, SLOT(quit()));
     return a.exec();
 }

**ClipFilter.h

 #ifndef _CLIPFILTER_H_
 #define _CLIPFILTER_H_
 
 #include <qstring.h>
 #include <qclipboard.h>
 #include <qfile.h>
 #include <qtextstream.h>
 
 #include <qpe/qpeapplication.h>
 
 class ClipFilter
 {
 public:
     ClipFilter();
 
     enum Mode {
         CLIP_READ,
         CLIP_WRITE,
     };
 
     void setMode(Mode mode){
         m_mode = mode;
     }
     void exec();
 private:
     
     void write();
     void read();
 
     QClipboard* m_cb;
     Mode m_mode;
 };
 
 #endif /* _CLIPFILTER_H_ */

**ClipFilter.cpp

 #include "ClipFilter.h"
 
 ClipFilter::ClipFilter()
 {
     m_cb = QApplication::clipboard();
     m_mode = CLIP_WRITE;
 }
 
 void ClipFilter::exec()
 {
     switch(m_mode){
     case CLIP_READ:
         read();
         break;
     case CLIP_WRITE:
         write();
         break;
     default:
         break;
     }
 }
 
 void ClipFilter::write()
 {
     QTextOStream(stdout) << m_cb->text();
 }
 
 void ClipFilter::read()
 {
     QTextIStream stream(stdin);
     m_cb->setText(stream.read());
 }


19172