ScrapboxでCtrl-nを入力できるようにする(AutoHotkey v2)

ScrapboxのEmacsキーバインドは便利ですが,Chromeではデフォルトで新規ウィンドウが開いてしまいます。
ブラウザ操作時にJavaScriptでctrl + nを奪えないかによるとAutoHotkey が良いようですが,同ページではAutoHotkey v1スクリプトが紹介されているので,v2でうまくいった例を記します。

AutoHotkey からAutoHotkey_2.0.14_setup.exeをダウンロード,実行。

AutoHotkey Dashが起動するので,New Scriptから以下のようなスクリプト emacs-like-for-scrapbox.ahk
を作成。

#HotIf WinActive("ahk_class Chrome_WidgetWin_1")
^n::
{
Send "{Down}"
}

C:\Users\ユーザ名\Documents\AutoHotkey に保存される。これをダブルクリックで実行すると以降効くようになる。
永続的にするには,上記ahkのショートカットを,C:\Users\a\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup に置く。

ちなみに最初「#HotIf」の行がなかったときは,当然全ウィンドウに対してこの設定が効くが,これはTeraTerm上でEmacsを開いてC-nをやったりするのと相性が悪く,Emacsが重くなる。なので「#HotIf」を設定した。ahk_class は AutoHotkey Spyで調べられる。

KiCad 7のSpecctra DSNのNPTHがおかしい?

以下のバグは,KiCad 7.0.5 でfix済みとのことです!

KiCad のメジャーバージョンが7になって,白抜き文字や任意のフォントが使えるようになるなど,とても良くなっています。
しかし一点だけ困ったことがあって,NPTH(ノンスルーホール)を含むPCBでDSNをエクスポートすると,キープアウトエリアが異常に大きくなってしまい,freeroutingで正しく処理できなくなってしまうという点です。

自分で置いたMountingHole等ならいったんパッドに置き換えて配線してからまたMountingHoleに戻すという手もありますが,部品のフットプリント自体に「位置合わせ用NPTH」があったりするとそうもいかなくなります。

これについては,以下の手動対処で一応なんとか回避できるようです。

KiCad 7からエクスポートしたDSNファイルを任意のテキストエディタで開く。

以下のような行を探す。

(keepout "" (circle F.Cu 502200))

これを以下のように修正(今のところ,単純に500000を減算することで対処できています)。

(keepout "" (circle F.Cu 2200))

USB3150-30-130-A という部品にも2箇所のNPTHがあり,やはり以下のようなDSNが出力されるのですが,これらの500850を850に書き換えたところうまくいきました。


(keepout "" (circle F.Cu 500850 -1500 425))
(keepout "" (circle B.Cu 500850 -1500 425))
(keepout "" (circle F.Cu 500850 4100 425))
(keepout "" (circle B.Cu 500850 4100 425))

おそらくすぐにバグフィックスされるとは思いますが,とりあえずの対処法ということで。

STLファイルの寸法を知りたい

3Dプリンタでも良く使われるSTLファイルですが,人からもらったSTLファイルの外寸(寸法,サイズ)をさくっと知りたいときはRubyで以下のような感じです。

#!/usr/bin/ruby
# stldimensions.rb: STLの外寸を求める。
# 要 stl (Gem)
# usage: $0 stlfile

require 'stl'

class Points < Array
  def dimension(axis)
    (self.map(&axis).max-self.map(&axis).min)
  end
end

# STLファイル中の全平面の全座標を得る。各要素はGeometry::Point。
points = Points.new(STL.read(ARGV.shift).map(&:last).map(&:points).flatten)

# 最大外寸を調べて表示
printf("%.2f x %.2f x %.2f\n",
       points.dimension(:x),
       points.dimension(:y),
       points.dimension(:z))

stlはgemでインストールできます。

$ gem install stl

STLビューアを立ち上げるのが面倒or不可能なときに。

ESPr Developer (ESP-WROOM-02) を電池で駆動する

小型で手に持てるIoT端末を作りたくて,スイッチサイエンスのESPr Developerがどんな電池で駆動できるか色々試しました。

  • ESPr Developerは素のESP-WROOM-02よりいくつか回路が追加されているので,その分少しだけ消費電力は高いかもしれません。
  • ESPr Developer以外に温湿度センサNeoPixel WS2813Bも接続してテストしています。
  • すべて,ESPr Developer のVINに入れているので,ESPr Developer上の3.3Vレギュレータは通っています。
  • 都合により,Li-Poバッテリは使えない前提です。
  • 本来は3.7~6.0 VをVINに入れるものなので,3Vは完全に定格外です。従って全くの無保証であり,たまたま動くこともあるんだねくらいの情報です。
電池 本数 合計電圧 動作したか
CR2032 2本直列 3V x 2 = 6V ×
CR2450 2本直列 3V x 2 = 6V
単4 3本直列 1.5V x 3 = 4.5V
単4 2本直列 1.5V x 2 = 3V
単5 3本直列 1.5V x 3 = 4.5V
単5 2本直列 1.5V x 2 = 3V
CR123A 2本直列 3V x 2 = 6V
CR123A 1本 3V
CR2 2本直列 3V x 2 = 6V
CR2 1本 3V

コイン電池2枚も魅力的だったのですが,とりあえずの結論として,電池と電池ボックスの入手性も考慮して単5✕2本で動かしてみます。