Hatena::Groupkeysnail

basyura snail

|

2010-08-09

AutoPagerize for Greasemonkey のセパレータのスタイルを変える

| 21:01 |  AutoPagerize for Greasemonkey のセパレータのスタイルを変える - basyura snail を含むブックマーク はてなブックマーク -  AutoPagerize for Greasemonkey のセパレータのスタイルを変える - basyura snail

セパレータの表示が気に入らなくてバージョンアップがあるたびに手を入れてた。スタイルの変更をすればいいことに気がつく。

f:id:basyura:20100809204411p:image

_keysnail.js に書く

style.register(<><![CDATA[
    .autopagerize_page_separator {
        display:none;
    }
    .autopagerize_link {
        text-decoration : none !important;
        color     : #8ec1da !important;
    }
    .autopagerize_page_info {
        background-color : #8ec1da;
        font-size : 6px;
        height    : 4px;
        color     : #8ec1da !important;
		text-align:right;
    }
]]></>.toString() , style.XHTML);
トラックバック - http://keysnail.g.hatena.ne.jp/basyura/20100809

2010-07-27

カーソル移動とページ内検索

| 23:25 |  カーソル移動とページ内検索 - basyura snail を含むブックマーク はてなブックマーク -  カーソル移動とページ内検索 - basyura snail

テキストエリア内のカーソル移動と、ページ内検索で割り当てたいキーが被るのでどうしようかと試行錯誤。検索バーの存在を確認して処理を切り替えればいいことに気がついた(遅い)。

  • gFindBar が表示されていれば検索中とみなしてテキストエリア内で検索を行う。
  • gFindBar が表示されていなければ編集中とみなしてテキストエリア内でカーソル移動を行う。

アドレスバーで C-n C-p を使って選択することもできる♪

key.setGlobalKey('C-f', function (ev) {
    getBrowser().mTabContainer.advanceSelectedTab(1, true);
}, 'ひとつ右のタブへ');

key.setGlobalKey('C-b', function () {
    getBrowser().mTabContainer.advanceSelectedTab(-1, true);
	ev.cancelBubble = true;
}, 'ひとつ左のタブへ');

key.setEditKey('C-f', function (aEvent) {
    key.generateKey(aEvent.originalTarget, KeyEvent.DOM_VK_RIGHT, true);
}, '右');

key.setEditKey('C-b', function (aEvent) {
    key.generateKey(aEvent.originalTarget, KeyEvent.DOM_VK_LEFT, true);
}, '左');

key.setEditKey('C-p', function (aEvent) {
   if(!command.gFindBar.hidden) {
        command.iSearchBackward();
        return;
    }
    key.generateKey(aEvent.originalTarget, KeyEvent.DOM_VK_UP, true);
}, '上');

key.setEditKey('C-n', function (aEvent) {
    if(!command.gFindBar.hidden) {
        command.iSearchForward();
        return;
    }
    key.generateKey(aEvent.originalTarget, KeyEvent.DOM_VK_DOWN, true);
}, '下');

key.setGlobalKey('C-n', function () {
    command.iSearchForward();
}, 'インクリメンタル検索', true);

key.setGlobalKey('C-p', function () {
    command.iSearchBackward();
}, '逆方向インクリメンタル検索', true);
トラックバック - http://keysnail.g.hatena.ne.jp/basyura/20100727

2010-07-18

サイトごとにキーバインドを定義

| 20:30 |  サイトごとにキーバインドを定義 - basyura snail を含むブックマーク はてなブックマーク -  サイトごとにキーバインドを定義 - basyura snail

はてブなど、独自のキーバインドが既に定義されている場合は keysnail の設定がじゃまになる場合があるので blackList に定義していた。

key.blackList = [
    'http://b.hatena.ne.jp/basyura/*',
    'http://smart.fm/*'
];

困るのは一部のキーバインドで、全て使えなくなるけど・・・と我慢していた。

けど、plugin が既にあった orz

Define keybindings by each site, prefer certain sites shortcut keys

Site local keymap

設定

plugins.options["site_local_keymap.local_keymap"] = {
	"^http://b.hatena.ne.jp/" : [
		["j" , null],
		["k" , null]
	],
	"^http://smart.fm/" : [
		["j" , null],
		["k" , null]
	]
}

また一つ使いやすくなった。

トラックバック - http://keysnail.g.hatena.ne.jp/basyura/20100718

2010-07-17

Page2Feed を呼び出す

00:56 |  Page2Feed を呼び出す - basyura snail を含むブックマーク はてなブックマーク -  Page2Feed を呼び出す - basyura snail

Page2Feed APIとは

RSSが存在しないページでもlivedoor Readerなどで購読できるように、RSSを生成する実験的サービスです。

動作としては、HTMLから特徴的なループを見つけてフィードに変換します。

Page2Feed

引数有りの時はその url を。無いときは開いているページの url を。

shell.add("generatefeed", M({ja: "Page2Feed", en: "Page2feed"}),
  function (args, extra) {
    let url = "http://ic.edge.jp/page2feed/preview/"
    if(args.length != 0) {
      url =  + args[0];
    }
    else {
      url += content.document.location.href;
    }
    gBrowser.loadOneTab(url, null, null, null, extra.bang);
  }, { bang : true });
トラックバック - http://keysnail.g.hatena.ne.jp/basyura/20100717

2010-07-16

開きっぱなしのプロンプトにもう一度フォーカスを当てたい

00:14 |  開きっぱなしのプロンプトにもう一度フォーカスを当てたい - basyura snail を含むブックマーク はてなブックマーク -  開きっぱなしのプロンプトにもう一度フォーカスを当てたい - basyura snail

プロンプトを表示したままフォーカスを外すと、再度 shell.input() を呼び出しても「Prompt is already used by another command」となってアクティブにならない(クリックしないとコマンド入力できない)事への対応。

key.setViewKey(':', function () {
    prompt.finish();
    shell.input();
}, 'Command System');

prompt.finish() を呼びだすといけるっぽ。

できてなかった orz

追記

こうか。

key.setViewKey(':', function () {
  if (document.getElementById("keysnail-prompt") != undefined) { 
    prompt.finish(true,true);
  }
  shell.input();
}, 'Command System');

finish で入力内容を引き継ぐかどうかは迷うところ。

トラックバック - http://keysnail.g.hatena.ne.jp/basyura/20100716
|