note

2012-5-16 Opera ~ キー操作で Flash コンテンツからフォーカスを外す

先ず

拍手ありがとうございました。毎回御礼が遅くなって申し訳ないです。

Opera ~ キー操作で Flash コンテンツからフォーカスを外す

メニューボタン or バーに Focus address field & Focus page とか Find & Cancel を登録して Alt → アクセス キーで実行したりアプリケーションを切り替えたりで大概は離脱できるのですが、YouTube の動画 (の再生コントロール部分) が難敵で、先の方法その他でも外せない時が。如何にかサクッと抜けられないか色々試してみました。

  1. Item, "Flash コンテンツからフォーカスを外す(&X)" = Focus page & New page & Close page

単にページにフォーカスを当てただけでは駄目でしたが、新規タブを開いて閉じてすると Flash コンテンツから離脱できました。

  1. Item, "Flash コンテンツからフォーカスを外す(&X)" = Go to page, "javascript: void prompt();" & Delay, 1 & Cancel

入力ダイアログを出すと Flash コンテンツからフォーカスが外れるのを利用。単純で一番無難かも。

  1. Item, "Flash コンテンツからフォーカスを外す(&X)" = Go to page, "javascript: (function (d, x, y) { var el = d.createElement('div'), v = Math.max(d.body.scrollHeight, d.documentElement.scrollHeight); el.style.cssText = 'width: ' + innerWidth + 'px; height: ' + innerHeight + 'px; background-color: #fff; position: absolute; top: ' + v + 'px; left: 0'; el.dataset.x = x; el.dataset.y = y; d.body.appendChild(el); scrollTo(0, v); })(document, scrollX, scrollY);" & Delay, 1 & Go to page, "javascript: (function (el) { el = el[el.length - 1]; scrollTo(Number(el.dataset.x), Number(el.dataset.y)); document.body.removeChild(el); })(document.querySelectorAll('body > div[data-x][data-y]'));"

Flash コンテンツが JavaScript 操作で (?) クライアント領域外に出るとフォーカスが外れるのを利用。超アバウトなスクリプトなのでページによっては通じなかったり表示が崩れたりするかも。(※1, ※2)

  1. Item, "Flash コンテンツからフォーカスを外す(&X)" = Go to page, "javascript: (function (d) { var el = d.createElement('div'), i = 'inherit', j; (function z(el){ var l = -1; while (el.children[++l]) z(el.children[l]); j = getComputedStyle(el, '').zIndex; if (j === 'auto' && i === 'inherit') i = j; else if (!isNaN(j)){ j = Number(j); if (typeof i !== 'number' || j > i) i = j; } })(d.documentElement); el.style.cssText = 'width: ' + innerWidth + 'px; height: ' + innerHeight + 'px; background-color: rgba(255, 255, 255, 0.1); position: fixed; top: 0; left: 0; z-index: ' + (typeof i === 'string' ? 1 : i + 1); d.body.appendChild(el); setTimeout(function () { d.body.removeChild(el); }, 4); })(document);"

クライアント領域幅相当の半透明のカーテンを掛けることでフォーカスを外す。Flash コンテンツが一瞬チラつくのが欠点。カーテンを掛ける為に z-index の最大値を取ろうとして冗長になっています。もっとスマートなやり方がありそう。

何れも動作確認は 11.64 で行っていますって言うかバージョンの変遷で使い物にならなくなるかも。

※1 2012-5-16 追記: 同日修正。通用しないページを発見したのでスクリプト変更。チラつきが無いと言う利点が失われたので余り意味のないパターンに。

※2 2012-5-17 修正: チラつきを大分抑えられる (スペックや状況によるのかチラつかないことも) アクションを書けたので再び変更。

※3 2012-6-22 追記: Opera 12.00 + Flash 11.3 の環境で JavaScript を使った方法が通じなく。序でに blur メソッドも試してみたけど駄目。代わりに javascript URI を開いただけでフォーカスが外れたり、古くからのアプリケーション切り替えによるフォーカス外しが満遍無く通じるようになったり。通じない時があったからゴチャゴチャ書いたのだけれど結局回帰。具体的に状況を掴めていないので環境によるのかもしれないし、また後々引っ繰り返るかもだけど。

Intel® HD Graphics 3000 又は 4000 を使用している環境で、HDMI ケーブルでモニタを接続するとリミテッド レンジになってしまう

2013-12-3 追記

イム日記さんの記事、Intel HD GraphicsのHDMI出力でRGBレンジがリミテッドになる(黒が白っぽくなる)問題で、フルレンジに直す方法にて、原因とちゃんとした解決方法が紹介されています。

以下、当記事の本文に目を通す必要は最早ありません。当記事の内容を要約すると「解像度を最大未満にしたらフルレンジになった」というものなのですが、先の記事で解説されているように、どうもタイミング標準の設定が 1920×1080 の時とは異なっていたことがフルレンジになった理由だった模様です。詳しくはイム日記さんの方をご覧ください。

本文

Intel® HD Graphics 3000 (2000 も?) 又は 4000 を使用している環境で、モニタを HDMI ケーブルで接続すると、モニタの階調がリミテッド レンジになってしまうというトラブルに遭遇。グラフィックス ドライバ 8.15.10.2712 及びそれ以前のバージョンで現象を確認。

モニタ側にレンジを変更できる設定項目は確認できなかったので、グラフィック プロパティ (igfxcpl.cpl) で詳細設定モード → ディスプレイ → PC モニター/テレビの設定 → 量子化の範囲の設定を「制限」から「デフォルト」又は「全範囲」にするという手順を試しましたが、此れが機能せず。ググってみると、同様に効かないという書き込みがチラホラ。

色々と試している内に、モニタの解像度を最大未満にしてスケーリングの設定を「ディスプレイ スケーリングを保持する」又は「縦横比をカスタマイズする」にするとフル レンジになることに気付きました。此の設定下だと先の量子化の範囲の既定値も何故か「デフォルト」に変わっている。然し、此の二つのスケーリング モードは画面を引き伸ばすので、標準で用意されている解像度だと dot by dot に出来ません。

そこで、同じくグラフィック プロパティに用意されている「カスタム解像度 (※次段の追記参照)」を使用。「ディスプレイ スケーリングを保持する」ならアスペクト比も保持されるので、縦か横の一方をモニタがサポートしている最大の値に、もう一方を最大値未満の解像度にすることで、dot by dot 且つフル レンジにすることに成功しました。

2013-9-14 追記: ドライバ 15.31.3.3071 (9.17.10.3071) 辺りからだったか igfxcpl.cpl 及び GfxUIEx.exe からカスタム解像度の項目が消えていましたが、インテル グラフィックス総合スレッド 7 の >>194 さんの書き込みより、代わりに CustomModeApp.exe (ディスプレイのカスタム解像度) と言うプログラムが追加されていて、そちらから解像度の追加・削除が行えます。他、情報元: 【DELL】U2713HM 7台目【27インチWQHD】(>>32), Custom Resolution on Intel HD 4600

縦横一方の解像度を削るというやり方なので完全な解決策とは言えませんが、数 px なら削れても構わないとか、ペンタブレットとの比率の関係で元々解像度を縮めて使っている、なんて方なら 1 つの回避策として有りじゃないかと思って書きました。

ドライバが更新されていく内に解決されると嬉しいのだけど、モニタの問題って可能性もあるから余り期待は出来ないかも。

尚、「縦横比をカスタマイズする」の方は百分率で表示幅を指定するモードですが、計算上ピッタリ収まるような解像度と百分率 (例:1,920 の 95% の 1,824) を指定しても dot by dot にはならず画面がボヤけてしまいました。此れもモニタによるかも。

参考ページ他

ASRock H67M-GE ~ iGPU Voltage

Ivy Bridge (3770K) を使う為に ASRock H67M-GE の BIOS (UEFI) のバージョンをベータの L2.04 に上げたのですが、OC Tweaker / iGPU Voltage の設定を既定の Fixed Mode, 1.250V から Auto に変更したら、iGPU Voltage の値が 0.000V になって画面が表示されなくなるという事態に。単に表示されないのではなく Windows が立ち上がらなくなっていた気がしないでもないです。画面が表示されないので確認のしようがなかったのですが、キーボードのランプが何時まで経っても点灯しなかったので。

何度か電源を On/Off する内に UEFI には入れたので電圧を固定値に戻して事無きを得ました。いざとなれば CMOS クリアをすれば済みますが。

最近公開された正式版の P2.10 でも同じ状況で、Auto にすると Save Changes and Exit 後に電圧が 0.000V に。環境問題臭いですが、同じトラブルに遭遇した人の為に書き記しておきます。

Windows Update で「管理者のアクセス許可を提供する必要があります。」というダイアログが出る

管理者権限を持っているにも拘らず、Windows Update で [更新プログラムのインストール] ボタンを押すと、「管理者のアクセス許可を提供する必要があります。」というメッセージ ダイアログ (ダイアログに備え付けられているボタンは [閉じる(C)] しかない) が出てアップデートを完了できない場合。

Windows Update 自体を管理者として開いてみたものの効果無し。以下で一先ずの解決はみたものの――

  1. services.msc を開いて Windows Update サービスを停止する
  2. %windir%\SoftwareDistribution を削除する (※1)
  3. services.msc から Windows Update サービスを再起動させる

※1 Windows Update の履歴や、アップデート プログラムの非表示の設定等が初期化されてしまうことは留意。ロールバックも出来なくなるかも。

次の更新時に再び冒頭のメッセージが出てしまいました。

で、色々試していて、非表示にしていた更新プログラムを「非表示の更新プログラムの再表示」で復活させると何故かダイアログが出なくなることに気付く。イミフと言うか此れまた環境問題臭いですが、似たような状況に陥った人はお試しあれ。

2600K と 3770K でちょこっとベンチ

チラッと書きましたが、2600K から 3770K に取っ替えました。せめて 3790K 迄は我慢するつもりだったので、関連スレに常駐して発熱がヤベェとか Sandy から変える意味は無いとか Grease Bridge なんて書き込みを見つつ欲求を抑えようとしたのだけれど無駄な足掻きだった。序でにメモリも DDR3-1333 4G (CAS レイテンシ 9-9-9-24) × 4 から 1600 8G (10-10-10-24) × 2 に換装したので、定格でほんのちょっとテスト。M/B は H67 の儘です。

一つ目。Iron 18.0.1050.0, Fx 12.0, Opera 11.62 で Kraken JavaScript Benchmark (version 1.1) を全画面表示 (解像度は 1,728×1,080[px]) で実行した結果。2012-10-3 追記: 尚、テスト当時 krakenbenchmark.mozilla.org の方はページが一時公開停止されていた為、Google がビルドしたバージョンの Kraken を使わせてもらっています。書き忘れていました。ごめんなさい。

2600K & 13333770K & 1600
Iron2102.2 ms1909.7 ms
Fx2278.5 ms2155.3 ms
Opera8354.4 ms7673.2 ms

クロック差 + IPC の微改善、と考えると順当な結果じゃないでしょうか。特に述べることも思い付かない内容ってだけとも言う。

二つ目。同じく全画面表示で HTML5 Fish Bowl で 1,000 匹表示した時の FPS。iGPU の性能確認。GT Over Clock (GT OverClocking Support) は Off で、iGPU Voltage は HD3k が 1.250V、HD4k が 1.150V。

2600K (HD3k) & 13333770K (HD4k) & 1600
Iron41~43 fps49~54 fps
Fx39~40 fps53~60 fps
Opera××

Opera は 11.62 の時点では GPU アクセ未実装 (という表現で正しいのか?)。ウィンドウ幅を縮めない限り、1 匹だけの表示でもカクカクで 1,000 匹は厳しかったので省略しています。

驚く程の向上ではないかなというのが率直な印象。特に Iron の方。試しに 60 fps に届くまでクロック上げてみましたが 1,500MHz で漸くといった感じ。スコアには出ていませんが、性能辺りの消費電力が落ちていたのは嬉しかったです。

随分前に公開していた CardWirth の計算シナリオでもテスト。2600K ではスコアを取っていなかったので Celeron (M) 530 1.73GHz との比較になります。

シングル スレッド向きっぽい CPU 指標チェッカ (2012 Q1 Ver.27.5) さんによる目安では、3770K の 3.5GHz は Celeron M 5xx の 4.74~5.03GHz 相当。それを踏まえると、乗算n の方は後 1 秒速くなってほしかったなという感想。"パッケージの呼び出し" が CPU 性能以外のところで足を引っ張っていそうな感が強いので、500 回分のコンテントを直接繋げれば 2 秒は縮まりそうな気もしますが、んなモンを用意できるだけの根気はないです。

マインスイーパ ~ 0 秒?

二ヶ月前のことですが、一ヶ所クリックしたら全展開するパターンに遭遇。

マインスイーパ (初級) : 0 秒?

0 秒キター! と思いきや、ハイスコアのところが何故か 1 秒。Wikipedia で「0 秒にはならない」と読んだことがあったけど、こういうことか。