onclickでクリップボードにテキストを貼付ける
(20061011編集しました。)
1年以上前にオケラボブログ : Widgetからクリップボードを使ってみるテストなんてのをやってみたんですけど、この時使った「隠しinputに書き込んでAppleScriptでC-cを入力させてコピーする」という手口はやっぱり美しくないと思ってるわけですよ。
で、OSXにはiconvなんてコマンドがあるらしいのでそれを使えば文字コードを変換できるんじゃないかと思って試行錯誤しました。
で、5時間くらいかけて色々失敗して諦めたんですけど、諦め記事書いてる最中に神様が降りてきたので急遽予定変更です。成功しちゃいました。
でも眠いから詳しくは一晩寝てから纏めます。とりあえず
function copy( str ){ if(window.widget) widget.system("/bin/echo -n '"+str+"' | /usr/bin/iconv -f UTF8-MAC -t shift-jis | /usr/bin/pbcopy", null); }
文字コードの部分は時と場合によるかもしれない。試してない。とりあえずソースコードは全部UTF-8で書いてる。
iconv -fは濁音の関係でUTF8ではなくUTF8-MACにする必要があります。
あと適当に、参考にしたようなしなかったようなもののメモ。
- http://lists.apple.com/archives/dashboard-dev/2005/Oct/msg00085.html及びこの関連ツリー
- 日経ソフトウエア 2006年 11月号 [雑誌]のOSXコーナー。(iconvの元ネタ。)
- A free XSLT processor, written in Java, XT の Mac OSX用 CUIパッケージ : サイト更新停滞ちうっ [ 名無しのVIM使い ](後ろの方にiconvの紹介)
- man iconv
- man pbcopy
- iconv:こんふぁぶログ(UTF8-MACの元ネタ)
- http://homepage.mac.com/travellers/blog/C746134881/E1616758770/index.html
っていうか今にしてみれば、echoを使うことをさっさと思い出してればもっとあっさりできそうだった悪寒。頑張れ俺。超頑張れ。