新・日々の暮らしに疲れてない?

一人バンド、火頭工房

マウスジェスチャーを調べてみて。

どうも、火頭です。

 

以前、マウスの右クリックと左クリックに独自の動作を組み込むクローム拡張機能を作ったのですが、それっていわゆるマウスジェスチャーだということで、他にどんな可能性があるのか、少し調べて回りました。

 

前から、あってもいいかなぁ、と思っていたのがページバック機能。ご存知でしょうが、1つ前のページにブラウザバックするという機能、ブラウザの左上の小さいボタンをクリックするのが面倒という人向け ←なんという怠け者。

 

ちまたでは、右クリックをホールドしたまま、少し左にマウスを動かすと動作するようにしているらしい、なるほどぉ。

 

で、実際にコピーというか、作ってみたんです。

クリックの挙動は何回も使用していたので、ほぼコピペ。

マウスを左に動かす、という部分はたぶん座標取得でやっているのだろう、座標取得も以前何かで使ったので楽勝。

 

内容は、

1.マウスを右クリックした時の座標を記録する。

2.右クリックをホールドした状態で、マウスが動いた時に座標を記録する。

3.1と2の座標を比べて、一定以上の距離を左方向へ動かせばイベントをトリガーするようにする。(別に右方向でもいいんですけど)

こんな感じ。

 

すぐ作れたのですが、使用感はというと...

最近あまり階層が深くなるページ閲覧をしていないことに気づきました。ページを開く時は新規タブで立ち上げることの方が多い、サイトを作る側の傾向もあるかと思います。

 

というわけで、あまり使わない機能になりました。

↓のタブショートカットのが私好みです。

hiatama.hatenablog.com

 

楽曲「Carrier」を公開。

久しぶりにトラックを公開しました。

雨が降るたびに季節の変化を感じます。

 

soundcloud.com

バッチファイルを初めて自作して、その後。

どうも、火頭です。

 

こないだ生まれて初めてバッチファイルを自作しまして、せっかくなのでもっと作るべきものはないかと探して回ったというお話。

 

コマンドプロンプトってプログラミングの環境構築とかで触ったくらいで、正直コピペばかりしてたので何をするものか全然知らなかったんですよね。

 

ようやく自分の力で、動くものが作れて嬉しい!と言ったところ、今回作った「画面の明るさを時間帯で自動調整する君」が気に入ったので、もっと作れそうなものを考えてみたのですが、めぼしいものもなく...

 

ようやく絞りだしたのが、

その1 グーグルクロームで指定したURLを一括で立ち上げてくれるバッチ

その2 月末の会計関連のファイルを一括で立ち上げてくれるバッチ

です。

 

どっちもそのままですが、地味に役に立ちます。

 

その1のページを一括で立ち上げてくれるバッチは、開きたいURLをリストしたテキストファイルを読み込み、forループでURLごとに読み取り、それぞれクロームの新規タブで立ち上げる、というもの。朝一のメールチェック、ニュースサイト、2ちゃんのまとめサイトなど、日々のルーチンワークの助けに。

 

その2はただファイルをまとめて立ち上げるだけ。月末になると会計作業のためにあのファイルを立ち上げてこれ立ち上げて...とやっていたので、一括で。

 

他なんかあるかねぇ...以上。

画面の明るさを自動で調整してくれるバッチ。後日談その2。

珍しく同じテーマで3回目の投稿です。

 

以前作った、画面の明るさを時間によって調節してくれるバッチファイルですが...(詳細はこちら↓)

hiatama.hatenablog.com

 

どうやらタスクスケジューラの設定が上手くいっていなくて、思ったタイミングで作動しません。

 

まず最初に設定していたのは「スタートアップ時」に実行→ シャットダウンしたPCを立ち上げた時に発火してくれますが、スリープ解除や休止状態からの立ち上げには対応しない。

 

次「ログイン時」に実行→ ほぼ同上。スリープ解除や休止状態からの立ち上げには対応しない。

 

私は普段、休止状態にすることが多いのですが、これはウィンドウズさん的には再ログインの扱いではないらしい、あー面倒。

 

ちょっと調べてみると「イベント時」を選ぶのが正解だそう。どうやら休止やスリープを解除する時にログとして記録されるらしく、このログを監視するのが良いらしい。

 

検索で出てきた設定は、タスクスケジューラのトリガー設定で「イベント時」を選び

 

ログ:「システム」

ソース:「Power-Troubleshooter」

イベントID:「1」

 

だったのですが、試してみると発火に失敗しました。仕方ないので、そのイベントログを見に行くことに。

 

初めて見たイベントビューア。ウィンドウズイベントを見てみると、どうやらKernel-Generalが起動に関わっているっぽい、詳細の欄には、時間設定に関するうんぬん書いてあるけど...ものは試しでこれをタスクスケジューラで監視してみると、あっさり成功。

 

ということで、ついに完成しました。

正真正銘「時間によって画面の明るさを調整してくれる君」です。

画面の明るさを自動で調整してくれるバッチ。後日談。

前回のエントリー↓を公開した後、細かい調整をしました。

hiatama.hatenablog.com

 

元々、日中は少し明るい画面、夜は出来るだけ暗く、と考えていたので、明るさの設定を変えた二つのファイルを用意し、時間帯によってどちらを処理するか条件分岐させられるよう調べてみました。

 

最初はタスクスケジューラの方で時間帯による処理分けを考えたのですが...そもそも指定した時間にPCが起動していなければ処理が無視されるとか、私は自宅のPCは外出中は落とす派なんですよね。

 

タスクスケジューラで「無視された場合でも起動したら処理をする」などと設定したところで、もし朝も無視→夜も無視、と無視が溜まると次にログインした時はどうなるの? など、検証も面倒なので、バッチファイルの方で条件分岐させて頑張ってみることに。

 

必要だったのは...

 

・変数の書き方: SET 変数名=

イコールの前後にスペースを入ちゃいけないらしい、偏屈すぎる。

 

・時刻を取得: SET time=TIME

timeという変数を宣言し、そこに現在の時刻を代入しています、時、分、秒数が入ります。ちゃんと入っているかどうかは、ECHO %time% で確認できます。

 

・文字の切り取り: SET time=%TIME:~0,2%

今回必要なのは、時、分、秒のうち、「時」の部分だけですので、そこだけ切り取ります、20時とか07時とか。

:~切り取り開始位置,切り取る文字数 という書式です。

 

・IF構文: IF 条件(処理) else (その他の場合の処理)

 

・比較演算子:%time% geq 18

geqはgreater or equal で、「18か、それより大きければ」となります。一覧は以下。

 

[数値1] equ [数値2] [数値1]と[数値2]が等しい
[数値1] neq [数値2] [数値1]と[数値2]が等しくない
[数値1] lss [数値2] [数値1]が[数値2]より小さい
[数値1] leq [数値2] [数値1]が[数値2]以下
[数値1] gtr [数値2] [数値1]が[数値2]より大きい
[数値1] geq [数値2] [数値1]が[数値2]以上


ちなみにANDに相当するモノがないようで驚愕しました。

今回の処理で必要なのが、0時~7時→暗い、7時~18時→少し明るい、18時~0時→暗い だったので、

 

IF %time% geq 7 AND %time% leq 18 (少し明るい処理) else (暗い処理)

 

的に考えていました。

 

ともあれ、これで目的だった「時間によって画面の明るさを変える」が達成できました。

以上。

画面の明るさを自動で調整してくれるバッチ。

寄せる年波うんたらで、PCやスマホの画面の明るさが厳しいこの頃です。

 

スマホは外で見ることも多いので多少明るくてもいいのですが、PCの画面の明るさの設定は夜なら一番暗く、昼ならそれより少し明るいくらい(20%とか?)がちょうど良いです。

 

一応そのように設定をしていますが(個人設定→電源オプションなど)なぜか毎回起動するたびに明るさマックスなんですよね、それを下げるのが日課みたいになっていたのであまり気にしていなかったのですが、ふと思い立って自動化してみることに。

 

画面の明るさを変更するバッチファイルを作ります。調べてみると以下。

 

コマンドプロンプトを管理者実行して powercfg.exe -l で設定に必要な各種のIDを取得。一覧から私が今使っているプランである省電力用のIDを控えておきます。

 

さらに必要な情報を表示するには powercfg /q  <SCHEME_GUID> <SUB_GUID> と打つのですが  <SCHEME_GUID>  にはさきほどのプランIDをいれ、<SUB_GUID>  はディスプレイをいじるためのIDと思われる 7516b95f-f776-4464-8c53-06167f40cc99 で置き換えます。

 

ずらずら色々とでてきます。ここにディスプレイの明るさ設定用のIDらしきものがありますので控える。

 

必要な情報が揃ったので、メモ帳でも開いて書いていきます。


powercfg -setacvalueindex <SCHEME_GUID> <SUB_GUID> <ディスプレイの明るさ用のID> 数値(0~100の間で)
powercfg -setactive <SCHEME_GUID>

 

これだけ。上はいわゆる書式だと思って頂いて、ID部分など置き換えます。

1行目で設定をして、2行目で実行する感じでしょうか。


保存して、ファイル名を「なんとか.cmd」に変更します、拡張子だけ注意。

 

このファイルを開いてみると...どーん!と明るさが変わりました。イエーイ。

 

これでバッチファイルの方は終了、次はこれをPC起動時に自動で実行してくれるように設定。方法は色々あるようですが、タスクスケジューラを使いました。

 

[Windowsキー]+R でタスクスケジューラを呼び出し。taskschd.msc と打つ。

 

このタスクスケジューラを見るのは初めてでした。開いてみると、結構余計なものが登録されていましたのでまず一掃。(無効になってたので影響はなかったのでしょうけど)

 

あとは新規フォルダを作り、さきほどのバッチファイルを登録し、起動のタイミングを設定し、簡単に終わりました。

 

な、なんと簡単な...。

このPC使い始めて4年目くらいでしょうか? 今まで設定変更に費やした時間を返して欲しいもんです、そしてその時間をかき集めてダークソウル2をプレイする時間に還元したいもんです(←数年ぶりにゲームソフトを買いました)。

 

おしまい

Chrome 拡張機能「YouTube Looper」を公開。後日談

先日公開したChrome 拡張機能YouTube Looper」、その後アレコレ改善点を考えたお話。

 

今回の機能は、動画全体を繰り返し再生+最初と最後の邪魔な部分をカット、という考え方ですが、やっぱどこでも好きな箇所を部分リピートくらいはできないとなぁ、ということで考えてみました。

 

部分リピートするには動画の長さを取得することがマストになります。動画の長さを取得するには、YouTubeのページに埋め込んだスクリプトから、document.getElementById('movie_player').getDuration(); で出来ますが、この結果をどうにかしてコンテンツスクリプト側に伝える必要があります、この方法については以前のエントリーで少し触れました、昔の苦労がいい感じに役に立ってくれました。訳のわからない関数を使うので好きになれませんが、ページで実行した関数の結果をコンテンツスクリプト側で受け取れます。

 

長さを取得できればこっちのものです、コンテンツスクリプトとポップアップページ間のメッセージのやり取りは定番のやり方があります。この関数↓

chrome.tabs.sendMessage();

 

これでポップアップ側で動画の長さを反映させれば好きな秒数を指定して部分リピートが可能になります。ところが...

 

部分リピート機能は普通特定の動画のみに適応する機能で、使いまわしをしません。私が当初考えた機能はわりと汎用性のあるものとして作ったので、設定をわけないといけなくなりました。

 

なんとなくめんどくさくなって、作業中断(別にそんな大変じゃないんですが)。

 

あと発見したエラー↓

・別のタブで作業している時はループが効かない(うわぁ致命的ぃ)。

・ループを効かせた状態で動画を試聴し、つべのメインページとか履歴のページに飛ぶと...なんと動画の音だけが再生されるという謎のバグが...つべの仕様で履歴のページにもプレイヤーが存在するんですかね。