TEX ShuraをHHKB的に使えるか

普段パソコンのキーボードはHHKBを使っています。トラックボールやトラックパッドと合わせて使っているのですが、やはりThinkPadのトラックポイントに憧れがあります。一時期サブPCでよく使っていたので便利さは知っています。その後トラックパッドを使っていたりもしましたが、製品が続かなくなって親指トラックボールに乗り換え。以後HHKBとトラックボールの組合せを自宅・職場・モバイルで使っています。まぁとにかくHHKBありき。

当然HHKB Studioは登場以来気になっているのですが、なーんか手が伸びない。カスタムできるメカニカルや自作も検討してみましたが、結局自分が使いたいのはHHKBなんだなぁと思って見送りまくる。そんな中、TEX Shuraというキーボードを知りました(情報が遅い)。

TEX Shuraの注目点はDIY版なら配置からカスタマイズできること。特に右Shiftを分割してFnを置いたり、右上をBackSpaceじゃなく2つのキーにできること。これでHHKB配置にできるじゃないか!
ということで早速注文。円安だから国内サイトのほうが安い。

キーボード自作は初めて。キースイッチはネットで適当に調べてKailh(何て発音するの)のSilent Pinkというのを72個。あと治具も。

トラックポイントのまわりのスイッチはトラックポイント基板と干渉するので最初に一旦基板を取り外してからスイッチをはめると良いらしい。そしてなんとなく取り付け始めてから気づく。スタビライザーを外すには、そもそも裏面の大きい基板を外さないといけないことに。

なので一旦取り付けたキースイッチを外して、基板をはがして、スタビライザーも外す。早速スイッチの足を折ってしまう。

意外と悩むのが最下段の配置。分割スペースレイアウトにしたほうが、スペースバーが長くなって良かったかなぁとも思いましたが、普段の自分のスペースバーの押し下げ位置がそんなに右ではなかったので、まぁいいか。

そんなわけで完成。Enterの上の「\ |」ボタンはBackSpaceです。

折れて死んでいったキースイッチ6個。72個買って66個使ったのでギリギリだわ。

組み上げて動作チェックとキー配置変更をwebサイトで行う。

TEX shura Web Configurator
このサイトで行えるのだけど、たまにバグったりするので、その時はリロードして初期配置からやりなおし。できあがったtexファイル(LaTeXかと思う拡張子)をキーボードのストレージ領域に配置して再起動したら適用完了。

使い勝手は、悪くないです。HHKBを模した配置とトラックポイントについては概ね満足。中クリック+1~0でトラックポイントのスピードが変わるのも良いです。
あとはキースイッチだなぁ。今回のKailh Silent Pinkは何もしなくても静音ってことで良いんだけど、なんか押した感が物足りない。こうしてキースイッチ沼にハマっていくのか…

『 TEX Shura DIY Type (Hot-Swap) 』 US-ASCII (マルチレイアウト対応) 自作キット (キースイッチは – センチュリーダイレクト

CentOS、boot領域不足への対応

CentOS Stream9を何度かアップデートして使っていたら、ある日起動しなくなった。GRUBの画面で止まっているので最新版を選んで起動しようとしても

error: ../../grub-core/fs/fshelp.c:257:file
'/initramfs-6.18.3-1.el9.elrepo.x86_64.img' not found.

これはboot領域が不足してinitramfs-~が作成できなかったことが原因らしい。古いカーネルで起動してみると確かに/bootが不足している。これに対応するには過去のカーネル関連を削除する。

dnf -y remove --oldinstallonly

これで3世代分残して他を消してくれる。世代数は/etc/dnf/dnf.confで指定されている。
その後ファイルを再度作り直し

dracut --kver 6.18.3-1.el9.elrepo.x86_64

failedが出たら失敗、何も出なければ成功。
完了後、無事再起動できた。

能代市内をコミュニティバスで移動した

前日に飲んだので車を別の場所に置きっぱなしで、翌朝取りに行くのに家族の都合が付かず、夏場なら歩いて行っても良いのですが冬だし寒いしなぁと思ってGoogle Mapsで検索したら、1時間に1本レベルではありますがバスが使えそう。

ローソン能代藤山店から能代市総合体育館の例

そんなわけでコミュニティバス「ではるん」で移動してみました。

日に2本しかないけど他の路線も組み合わせればもうちょっとあるか。
300円で市の中心部まで行けるので、タクシーやら代行やらよりは安くなる。
キャッシュレス決済対応。

Google Mapsへ時刻表提出するバス会社の手間もあるんだと思うんですが、ありがたいですね。

【乗降場所変更】能代駅前⇔東能代地区連絡コミュニティバス「ではるん」をご利用ください – 能代市

Hyper-VでNAT環境を作り、仮想PCにインターネット接続させる

テスト用のLinuxを持ち運びたくて、WindowsノートPC上にHyper-Vで仮想PCを作りましたが、ネットワーク接続に困った。
・外のPCからはアクセスされなくて良い
・自分のWindowsからは固定されたIPでアクセスしたい
 ↑or 独自のローカルドメイン名でアクセスさせる(unbound DNS使用)
・仮想PCからインターネット接続も使いたい

Hyper-Vのネットワーク接続は仮想スイッチで行う。
仮想スイッチは「外部」「内部」「プライベート」があって、
・「外部」ホストPCの物理NICに相乗りする。なのでWiFiなど環境が変わると仮想PCもDHCPの影響を受ける。
・「内部」ホストPCと仮想PCでLANを作る。
・「プライベート」仮想PC同士だけでLANを作る。ホストPCとも繋がらない。
という違いがある。

仮想PCのIPアドレスを固定しつつインターネット接続を行うには、「内部」仮想スイッチを作成して、そこからNAT(WinNAT)で仮想PCのアクセスを確保する。

仮想スイッチのIPアドレスを 192.168.99.1、仮想PCのIPアドレスを192.168.99.2として
ホストPC上管理者権限で
New-NetNat -Name hogeNAT -InternalIPInterfaceAddressPrefix 192.168.99.0/24
とするとNATが使えるようになる。
やってみたけどすぐには使えなくて、再起動したら使えるようになってた。

NAPTでポート転送もできる。
Add-NetNatStaticMapping -NatName hogeNAT -ExternalIPAddress 0.0.0.0 -InternalIPAddress 192.168.99.2 -ExternalPort 10022 -InternalPort 22 -Protocol TCP
これで他のPCからホストPC:10022宛で仮想PC:sshができるようになったりする。

仮想PC側はIP固定にして、DNSはGoogle Public DNSなりホストPCに立てたDNSなりを使えば良い。DHCPサーバーを立てることもできるようだ(やってない)。

現在どんなNatが存在しているかはGet-NetNat、削除はRemove-NetNatのようだ。
コマンドが長いけどオプションまでタブ補完してくれて助かる。

追記
Hyper-V、内部ネットワーク、NATの組合せを使った場合、Windows起動時にインターネット接続が無いとうまく接続されないようで?NATが動作していないか、仮想マシンから仮想スイッチへの接続がされていないか、ともかくホスト-ゲスト間の通信ができなかった。
ゲストOSを再起動して繋がったので、NATというよりはゲスト側の問題か。
無線LANの接続が遅かったりするとタイミングによっては同じことが起きるかもしれない。

ローカルドメインでワイルドカード名を使う

webサーバー作るときに最終的には *.example.com とか使うつもりだけど、開発テストで *.hogehoge.local みたいな名前を使いたい。
Windows上でHyper-Vで仮想PCをサーバーにしてLinuxを動作させる。
Linuxはwebサーバー、DB等。Windowsでブラウザを開いて使うため、Windowsにワイルドカードなホスト名を認識させないといけない。hostsにはワイルドカードが書けないので、LinuxでもWindowsでもどっちでもいいのでDNSを立てる。

今回はWindows上にUnboundを使ってみました。ちゃんとwindows用インストーラーがある。
NLnet Labs – Unbound – About

インストールしたら c:\Program Files\Unbound\service.conf を編集。

server:
    interface: ::1
    interface: ::0
    interface: 192.168.99.1 #Hyper-Vの仮想スイッチ(内部)接続で使ってるIPアドレス
    interface: 127.0.0.1
    interface: 0.0.0.0
    access-control: 0.0.0.0/0 refuse #外部には使わせない
    access-control: ::0/0 refuse
    access-control: 127.0.0.1/8 allow
    access-control: 192.168.99.1/24 allow #仮想スイッチ内からは使わせる
    access-control: ::1 allow

    auth-zone:
        name: "hogehoge.local"
        for-downstream: yes
        for-upstream: no
        zonemd-check: no
        zonemd-reject-absence: no
        zonefile "hogehoge.local.zone"

forward-zone: #ローカル該当ドメイン以外はGoogle Public DNSに問い合わせる
    name:"."
    forward-addr: 2001:4860:4860::8888
    forward-addr: 2001:4860:4860::8844
    forward-addr: 8.8.8.8
    forward-addr: 8.8.4.4

hogehoge.local.zoneも作成

$ORIGIN hogehoge.local
*.hogehoge.local    A    192.168.99.2

unbound-checkconfでチェック後、WindowsなのでサービスからUnboundを再起動して読み込ませる。

nslookup fuga.hogehoge.local localhost で結果が返ってくればOK。
ネットワークアダプタの設定でDNSを手動にしてlocalhost指定。
ワイルドカードを使う際はauth-zoneじゃなきゃダメみたい。

ローカルにbind立てるのは面倒だったのですが、unboundは簡単な感じでいいですね。