Skip navigation.

exploreopera

| Help

Sign up | Help

Kuruman Log

かつて自分のカスタムログを書きためていたこともあった

Posts tagged with "keyboard"

Firefoxライクなタブ切り替え

Opera 9.5ではキーボードショートカットがFirefox互換に刷新されているのですが、若干抜けがあります。お気づきになりましたら是非コメントしてください、というのが今回の趣旨。

たとえばAlpha版ではタブを元に戻すショートカットキーが異なっていましたが、これはBeta版でFirefox互換に修正されました。その他には一部ラップトップユーザの利用するタブ切り替え、Ctrl+PageDown/PageUpを利用することができません。このような例は他にもいくつか存在するでしょう。

ちなみにこのCtrl+PageDown/PageUpはOperaでいうところの1/2に該当しますので、以下の定義を[Application]へ追加することで同様の動作を実現できます。

PageDown ctrl=Switch to next page
PageUp ctrl=Switch to previous page


追記。Ctrl-TabでもFirefoxライクに動いてほしいということであれば、設定を変更した方がスマートです。[ツール>詳細設定>詳細設定>タブ]から、そもそものリスト表示を止めてしまえばよいでしょう。その場合、[Application]へは以下を追加した方がより適当となります。

PageDown ctrl=Cycle to next page
PageUp ctrl=Cycle to next page

q ctrlの罠

,

Operaは標準でq ctrlでOperaを終了するというショートカットが割り当てられているのだが、今まで窓使いの憂鬱でそれを別の用途に利用していた。具体的には窓使いの憂鬱によるキー定義上書きを回避するショートカットとして利用していたのだ。で、時折癖でq ctrl, t ctrlと押してしまうことがある。そしてOpera終了。非常に残念な結果となる。 これではやってられないので対策をうった。

q ctrl=Go to page,"javascript:alert(':\'<')"

これでばっちり。

フォームサイズ

,

フォームサイズを変えたい時ってのもあるかな、という事で Experiments > FormTextResizer">FormTextResizerとかいうブックマークレットを仕込んでみた。

[Application]
x alt, s, i, z, e=Go to page, "javascript:TxtRsz={formEl:null,adEv:function(t,ev,fn){if(typeof document.addEventListener!='undefined'){t.addEventListener(ev,fn,false)}else{t.attachEvent('on'+ev,fn)}},rmEv:function(t,ev,fn){if(typeof document.removeEventListener!='undefined'){t.removeEventListener(ev,fn,false)}else{t.detachEvent('on'+ev,fn)}},init:function(){var textareas=document.getElementsByTagName('textarea');for(var i=0;i<textareas.length;i++){textareas.style.cursor='se-resize'}var inputs=document.getElementsByTagName('input');for(var i=0;i<inputs.length;i++){if(inputs.type=='text'){inputs.style.cursor='e-resize'}}TxtRsz.adEv(document,'mousedown',TxtRsz.initResize)},initResize:function(event){if(typeof event=='undefined'){event=window.event}var target=event.target||event.srcElement;if(target.nodeName.toLowerCase()=='textarea'||(target.nodeName.toLowerCase()=='input'&&target.type=='text')){TxtRsz.formEl=target;TxtRsz.formEl.startWidth=TxtRsz.formEl.clientWidth;TxtRsz.formEl.startHeight=TxtRsz.formEl.clientHeight;TxtRsz.formEl.startX=event.clientX;TxtRsz.formEl.startY=event.clientY;TxtRsz.adEv(document,'mousemove',TxtRsz.resize);TxtRsz.adEv(document,'mouseup',TxtRsz.stopResize);try{event.preventDefault()}catch(e){}}},resize:function(event){if(typeof event=='undefined'){event=window.event}try{TxtRsz.formEl.style.width=event.clientX-TxtRsz.formEl.startX+TxtRsz.formEl.startWidth+'px'}catch(e){}if(TxtRsz.formEl.nodeName.toLowerCase()=='textarea'){TxtRsz.formEl.style.height=event.clientY-TxtRsz.formEl.startY+TxtRsz.formEl.startHeight+'px'}},stopResize:function(event){TxtRsz.rmEv(document,'mousedown',TxtRsz.initResize);TxtRsz.rmEv(document,'mousemove',TxtRsz.resize);var textareas=document.getElementsByTagName('textarea');for(var i=0;i<textareas.length;i++){textareas.style.cursor='text'}var inputs=document.getElementsByTagName('input');for(var i=0;i<inputs.length;i++){if(inputs.type=='text'){inputs.style.cursor='text'}}}};TxtRsz.init();"

開発者向けツール

, ,

素敵すぎるOpera developer toolsなんてボタンが公開されていたので、メニューとキーボードショートカットに埋め込んでみた。

menu.iniにはこんな感じで。Web Tools Menuセクションは自分が勝手に定義しているそれ系のサブメニュー。

[Web Tools Menu]
Item, "&DOM Console"=Go to page, "javascript:(function(){var ele=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));ele.type='text/javascript';ele.src='http://devfiles.myopera.com/articles/59/domConsole_2.js';ele.parentNode.removeChild(ele);domConsole_2.open();})();"
Item, "&CSS Editor"=Go to page, "javascript:(function(){var ele=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));ele.type='text/javascript';ele.src='http://devfiles.myopera.com/articles/59/styleSheets.js';ele.parentNode.removeChild(ele);cssConsole.open();})();"
Item, "DOM &Snapshot"=Go to page, "javascript:(function(){var ele=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));ele.type='text/javascript';ele.src='http://devfiles.myopera.com/articles/59/liveSource.js';ele.parentNode.removeChild(ele);liveSource.open();})();"</codde>

キーボードショートカットはApplicationセクションにこんな感じで定義した。Browser Windowセクションで良いような定義なのだけれど、習慣的に何でもAplicationセクションにつっこんでしまう……これはよろしくない。

[Application]
x alt, d, o, m=Go to page, "javascript:(function(){var ele=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));ele.type='text/javascript';ele.src='http://devfiles.myopera.com/articles/59/domConsole_2.js';ele.parentNode.removeChild(ele);domConsole_2.open();})();
x alt, c, s, s="Go to page, "javascript:(function(){var ele=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));ele.type='text/javascript';ele.src='http://devfiles.myopera.com/articles/59/styleSheets.js';ele.parentNode.removeChild(ele);cssConsole.open();})();""
x alt, s, o="Go to page, "javascript:(function(){var ele=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));ele.type='text/javascript';ele.src='http://devfiles.myopera.com/articles/59/liveSource.js';ele.parentNode.removeChild(ele);liveSource.open();})();""

今までx alt, d, o, mに定義していたツールはお役ご免になった。

UTF-8によるアドレスバーのエンコード絡み

, ,

usopionさんがUTF-8でURLエンコードされたURLを取得するブックマークレットを作成された。普段すべてのアドレスをUTF-8でエンコードするのチェックボックスを外して使っていたが、そうしているとUTF-8で記述されていないウェブページ上に全角文字を含むリンクが在った場合に問題が発生するようだ。ブログなどに投稿するためにエンコードされていない状態のURLを取得する機会と全角文字の含まれるURLへのリンクを踏む機会。どちらが多いと問われれば、私の場合間違いなく後者だ。

……ということで、x alt, u, r, lGo to page, "javascript:prompt('現在の URI',encodeURI(location.href).replace(new RegExp('%2525([\\da-f])','gi'),'%25$1'));void(0);"を割り当ててみた。これで必要な時にはエンコード前のURLを取得できる。若干opera_exが不便になるが致し方あるまい。どうにかならないかといくらか試行錯誤してみたが、僕の手ではどうにもならなかった。

追記。ソース中のスマイル君(仮称)も僕の手ではどうにもならなかった。

vi風スクロール

,

どのページでも b j k でスクロールできるようにするGreasemonkeyスクリプトを見てvi式に1キーで画面を移動できたら便利かもなぁと思い試してみることに。この記事ではw3mに則ってbへ一画面上への移動を割り当てているけれど別にShift+Spaceで十分という事でそれは割り当てなかった。

[Browser Window]
k=Scroll up
j=Scroll down
l=Scroll right
h=Scroll left

これで今までウェブの閲覧の為だけにEmacs風に2キーを押すという煩わしさからは解放される……筈。

拡大率

,

標準では8Zoom in, 100が、7Zoom out, 100が割り当てられている。しかし実際に私がよく使うのは150%程度。200%では少々大きすぎるのだ。……ということでこれらをZoom in, 50Zoom out, 50として利便性を高めることにした。これでもう0を連打する必要もない。

文字の大きさだけを変えたい

, , , ...

文字の大きさだけを変えるUserJSを書いたので、それを入れた。

FirefoxなんかだとCtrl++Ctrl+-に割り当てられているみたいだけれど、わざわざ2つのキーを押さえるのは煩雑なのでCtrlは押さなくて良い様にしたいところ。そんなわけで、元々+-*に割り当てられているズームを全てこのスクリプトを使うように書き換える事にした。

Plus            = "Go to page, "javascript:fontSizeController.increase();""
Plus ctrl       = "Go to page, "javascript:fontSizeController.increase2();""
Plus shift      = "Go to page, "javascript:fontSizeController.increase();""
Plus shift ctrl = "Go to page, "javascript:fontSizeController.increase2();""
Add ctrl        = "Go to page, "javascript:fontSizeController.increase2();""
-               = "Go to page, "javascript:fontSizeController.decrease();""
- ctrl          = "Go to page, "javascript:fontSizeController.decrease();""
- shift         = "Go to page, "javascript:fontSizeController.decrease();""
- shift ctrl    = "Go to page, "javascript:fontSizeController.decrease2();""
Dec ctrl        = "Go to page, "javascript:fontSizeController.decrease2();""
*               = "Go to page, "javascript:fontSizeController.restore();""

これで問題なし、完璧……と思いきや、私の環境だとテンキーでしか意図した通りに動いてくれない。+のアクションを起こすと新しいタブを開いてしまう。……何故?

暫く格闘してみたのだけれど、埒が明かないので諦めた。文字だけの拡大なんてそう使う機能でもないし……。

本当は*と同じアクションを=にも充てたかったのだけれど、なんと書けばいいのか分からなかった。というか、=が駄目なのは当然として、残る記述はEqualしか浮かばなかった。

メーラーにBack/Forward

, ,

ブラウザ化するメーラーのはなしを知って我がOpera Mailでも戻ったり進んだり出来るようにしてみました。具体的には戻る・進むボタンの追加とキーボードショートカットの追加。Mail Applicationは思いの外1キーショートカットが余っている。今回もzxというこの上ないキーが残されていたのでこれらにそのままBackFowardを割り当ててみた。

スパム判定をキーボードショートカットに追加した

,

いちいちポインタを動かして迷惑メールボタンを押している自分に気付いた。Mail Windowのsが空いているので迷わずそこにMark as spam | Mark as not spamを追加した。