2011年11月28日月曜日

Keyaction cancelerを更新しました。

このエントリーをはてなブックマークに追加

必要は発明の母

数日前に書いたkeyaction cancelerに対するはてブコメントで
id:hokorobi あぁ、勘違いしていた。Operaのキー設定を優先するんだと思っていたけど逆だ。Googleリーダーでも 1, 2 をタブ切り替えのまま使いたいんだけどどうやるんだろう? というのがありましたので、ああ、なるほど。デフォルトアクションを優先させたいのね。よしよし。と思って書きました。
発想は単純です。Webでキーアクションを割り当てる場合、大抵keydownイベントにイベント関連付けしてますので、Web側のkeydownイベントをpreventDefaultすればいいのです。
ちゃんと賢いOpera好きなプログラマがいれば、そんな適当なコードは書きませんが、それで9割のブラウザの場合、Web側の想定の動きをするので、それで満足しちゃうサービスが多いのも仕方がありませんね
keyupにイベントつけてるサイトもありますが、そこまで変態的なイベント操作は知りません><

お待ちかねのコード

// ==UserScript==
// @name      keyaction canceler
// @namespace http://looxu.blogspot.com/
// @include   http://www.tumblr.com/*
// @include   http://www.pixiv.net/member_illust.php?mode=manga*
// @include   http://mail.google.com/*
// @include   https://mail.google.com/*
// @include   http://www.google.com/reader/*
// @include   https://www.google.com/reader/*
// @author    Arc Cosine
// @version   2.0
// ==/UserScript==
(function(win,doc){

 //You can add more domain and key.
 var PressConf = {
  'www.tumblr.com': 'JK',
  'www.pixiv.net': 'JK',
  'mail.google.com' : 'G',
  'www.google.com' : 'G'
 };

 //You can add more domain and key.
 var DefActionConf = {
  'www.google.com' : '12'
 };

 function actionCancel(data, conf ){
  var eve = data.eve.event || data.eve;

  if( /INPUT|TEXTAREA/.test(data.tag) ) return;
  var keyList = conf[location.host];
  var key = String.fromCharCode(data.key).toUpperCase();
  if( keyList.indexOf(key) < 0 ) return;
  if( eve.ctrlKey || eve.altKey ) return; //if press Ctrlkey  or Altkey then ignore event
  data.eve.preventDefault();
 };

 win.addEventListener('keypress', function(e){
  var data = {
   'eve' : e,
   'tag' : e.target.tagName,
   'key' : e.which
  }
  actionCancel(data, PressConf);
    },false );

 for( var host in DefActionConf ){
  if( location.hostname.indexOf(host) != -1 ) {
   win.opera.addEventListener('BeforeEventListener.keydown',function (e) {
    var data = {
     'eve' : e,
     'tag' : e.event.target.tagName,
     'key' : e.event.keyCode
    }
    actionCancel(data, DefActionConf);
   },false);
  }
 }

})(window,document);

こんな感じです。githubにもUPしてますので、そっちから落とす人はそちらからどうぞ。
https://github.com/ArcCosine/userscript
以上です

Favstar.fmが重い

このエントリーをはてなブックマークに追加

みんな大好きFavstar

Twitterが好きでふぁぼり・ふぁぼられが好きな人は、Favstar.fmを結構な確率でチェックしてるのではないでしょうか。
ところが、最近のFavstar.fm重くないですか?
調べた所、どうやらad-maker.infoサーバが重い模様。
ここで、Operaユーザならばコンテンツブロックに追加するという思考パターンになりますので、その思考で行きましょう。
ブロックする手順は下記の通り

  1. Favstar.fmにアクセスした後、適当な所で右クリックして、コンテンツのブロックを選択
  2. 右上の詳細設定をクリック
  3. コンテンツのブロックウインドウが出ますので、追加ボタンをクリック
  4. そこに、「http://admin.ad-maker.info/*」を入力

僕の体感ですと、ブロックする前は15秒くらいかかっていたのが、ブロック後は5秒くらいで表示される感じです。
あくまでも体感ですし、適当な感覚ではありますが、確実に早くなると思いますので、ヘビーにFavstar.fmをチェックされてる方は試してみてください。
以上です。

2011年11月25日金曜日

vim+zsh+Cygwin環境を構築したので、メモ

このエントリーをはてなブックマークに追加

Cygwinで遊びたいっ

Cygwinで遊びたい季節ですよね(どういう前ふりなの……?)
いますぐコマンドプロンプトを捨てて、Cygwinを使うべき10+の理由 - ブックマクロ開発に
上記エントリに影響されて、早速Cygwin環境を構築したのでその覚書を。
構築環境はWindows7 Professional 64bit版です。

minttyを最大化で起動する方法

このエントリーをはてなブックマークに追加

最近、Cygwin始めました

某エントリに影響されて、そんなに楽しいのかなと思って手を出した次第。
1日ちょっとでひとまずVim環境だけ整えたって感じです。
なかなか面白いし、自分が持っている*nix系の知識が役に立っております。

本題

で、本題ですが、ターミナルとして、mintty.exeを利用するのですが、これを最大化表示したかった。
TwitterにもPostしたんだけど、minttyに--help渡すとそこに書いてあった。
引数に--window続けてmaxを与えればよさそう。
ということで、最終型はこんな感じ。

mintty.exe --window max /bin/zsh --loing -c "screen -U -x -R"

zsh良いよね。
以上です。

2011年11月24日木曜日

gmailでの不満解消。

このエントリーをはてなブックマークに追加

今までの不満

周知の通り、僕はキーボード大好きっ子です。
キーボードに触れて作業することに喜びを感じる生き物なので、アプリケーションはもちろん、Webもなるべくキーボード操作したいと思っています。
ところで、キーボードで操作出来るWebの代表例はgmailですね。
gmailのお陰で僕はメーラーを捨てることが出来るくらい、gmailの使い勝手は良いです。
そのgmailに不満点が一つありました。
それは2ストロークのショートカットが効かないというものでした。
例えば、inboxへ移動するg,iというアクションが効かなかったのです。
これは作業効率を大幅に下げるもので不満の元でもありました。

特殊環境でのみ発生する不具合

ちなみに、この現象、非常に特殊な環境でのみ発生します。
それは以下の環境です。

  1. 使用ブラウザがOpera
  2. keyboard.iniに2ストロークアクション(g,gみたいなの)を登録してる
  3. 2ストロークアクションの最初のキーが(この場合、g)gmail側のストロークアクションの最初のキーと一致している。

このような変態じみた設定をしている環境でのみ動かないという物でした。

僕はVimっぽい動きをOperaにさせているので、g,gをGo to startアクションに割り当てています。
gキーを二連打するとそのままページトップへジャンプするという動きをします。
これが気持ち良いんですよ。
まあ、気持ちよさはともかく、これを生かしつつ、gmailのg,iとかg,sを使いたいというのが僕の欲求でしたが、Operaの仕様なのか、2ストロークが設定されてる場合、Opera側が有効になるという動きをしていました。

2011年11月5日土曜日

こんなに若者が不幸な時代はない

このエントリーをはてなブックマークに追加

初めに

こんなに若者が幸福な時代はない
上記エントリをお読みください。
上記エントリに同意出来る方は、このエントリを読んでもしょうがないので、お布団をもふもふする作業に戻ったり、ニコニコ動画を眺めるというお仕事に戻ってください。