[ 新規 | 編集 | 差分 ] [ 検索 | 一覧 | 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

変更履歴

編集

ご意見等

編集

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

[[#rcomment]]

使用例

編集

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

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

使い方

編集

天気予報スクリプト

編集

塚本さん作の天気予報スクリプトで使用して頂いています。

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());
}

18028