なすびぼうろく

主に技術系の備忘録をつけたり

HHKBレイアウトのキーボード

HHKBの新作まさかの静電容量無接点ではなくメカニカルでキーボード界隈を賑わせているが。
HHKBと同レイアウトでメカニカルのキーボードは他社製品でいくつか存在している。

HHKBレイアウトキーボードのコンプを狙っているので今回はいくつか備忘録を兼ねて紹介してみる。
条件としては、

  • 何かしらのキーマップ規格に対応しているもの
  • 分割ではない
  • 今も手に入るもの

に限定する。
大体ベアボーンだったり自作だったりが多いので完成品が欲しい人はご注意を。

TOKYO60

drop.com

NEVEREST Series EC keyboards 60

NEVEREST Series EC keyboards by deskeysdeskeys.io

Q60

Keychron Q60 QMK Custom Mechanical Keyboardwww.keychron.com

今のところこのリストで持っているのはQ60だけです。
KARAとTempoが超ほしい……。

【UE5】ImGuiで日本語を使おうとするとフォントアトラスが破壊される

github.com

これをUnrealEngine5に導入してイケイケなデバッグウィンドウを作っちゃおうってワケ! と、意気揚々に作業していたらつまずいたので備忘。

日本語化対応で苦戦

いろんな記事で日本語化対応が紹介されていますが、自分の環境だとうまくいかず。 下記参考にさせて頂いた記事。 zenn.dev

具体的には、フォントアトラスが破壊されてバラバラな矩形が表示されたり、またはクラッシュしたり。

何が違うんだろうと思ってフォントビルドのところにログを入れてみたら何回も走っている。 どうやらマルチプレイヤーオプションのプレイヤー数を複数人にしているのが原因らしい。 そしてフォントアトラスを書き込む領域は同じなので変な表示になってしまうと。

対策

参考にさせていただいた記事とおなじImGuiContextProxyに処理を書いているので そこのContextIndexを見て初期化時とプレイヤー1実行時に走るとき以外はスキップするようにした。

  if (!bFontInitialized && ContextIndex <= 0)
    {
        bFontInitialized = true;
        IO.Fonts->Clear();
        const FString FontPath = FPaths::ProjectDir() + TEXT("rounded-l-mplus-2p-medium.ttf");
        UE_LOG(LogTemp, Log, TEXT("ImGui FontPath: %s, ContextIndex: %d"), *FontPath, InContextIndex);
        
        IO.Fonts->AddFontFromFileTTF(TCHAR_TO_ANSI(*FontPath), 18.0f, nullptr, IO.Fonts->GetGlyphRangesJapanese());
        const bool FontBuildResult = IO.Fonts->Build();
        UE_LOG(LogTemp, Log, TEXT("ImGui FontBuild %s"), FontBuildResult ? TEXT("Success!!") : TEXT("Failed!"));    
    }

これで表示できた。 しかし、こんな場当たり的な対応で良いのかは甚だ疑問である。 明確な答えを持っている人がいたら教えてくださいませ……。

モニタ非接続のPCでリモートデスクトップをネストすると真っ暗闇

きっかけ

会社のPCのモニタが変わった。 それによって、挙動が少し変わった。

  • 今までのモニタ:あくまでバックライト消灯と液晶を閉じるだけ。

  • 新しいモニタ:完全にGPUとのやり取りをシャットアウト。

よって新しいモニタではハードウェアアクセラレーションで描画してた系アプリの表示が更新されなくなってしまう問題が生じた。 Microsoft謹製のリモートデスクトップアプリもハードウェアアクセラレーションで描画されているので真っ暗闇に。

たいさく

ハードウェアアクセラレーションをOFFにすればいいわけで。