2024/12/01

Windows 11でKeychronの2.4GHz無線レシーバーを接続するとゲームコントローラーのジャマをする問題

ゲームやろうとしたらなぜかコントローラーの認識がおかしくなり、心当たりがあるとすれば昨日導入したKeychron K15 Maxぐらいしかないけど・・・と調べていたらやっぱりこれが原因だった件。

付属の2.4GHz無線のレシーバーで接続していたのだけれど、どうやらこのレシーバーがなぜかゲームコントローラーの機能を内包しているのが原因らしい。

で、その解決方法。

Windowsの設定から
Bluetoothとデバイス
-> その他のデバイスを表示
-> (画面最下部の「関連設定」にある)その他のデバイスとプリンターの設定
とたどるとコントロールパネルの「デバイスとプリンター」が開く。
(最近Windowsのこの辺の設定とコンパネが上手く統合されて無くてホント面倒くさい・・・)

で、その一覧に「Keychron Link」というデバイスがあり、これが無線のレシーバーらしい。これを右クリックしてプロパティを開くと、

Keychron Linkのプロパティ

こんなふうになぜか「HID準拠ゲームコントローラー」がリスト内にあるので、これを選択して「プロパティ」ボタンをクリック。

HID準拠ゲームコントローラーのプロパティ

このダイアログの「設定の変更」ボタンをクリック。(管理者権限が必要)

HID準拠ゲームコントローラーのプロパティを変更

ダイアログが設定変更可能な状態で開き直すので、「ドライバー」タブの「デバイスを無効にする」ボタンをクリックして無効化、ダイアログのOKボタンをクリックして完了。

これで無線レシーバーに内包されている意味の無いゲームコントローラーデバイスとしての機能が無効化されるので、他のゲームコントローラーを邪魔することが無くなる。

2024/11/30

キーボード : Keychron K15 MAX (JIS配列版) レビュー

 タイプする量はそこそこ多いので、何かよさげなキーボードがないかとちょいちょい探してみたりしている。自分の好みとしては

  • 英語(というかソースコード)も日本語もタイプ量多いし頻繁に切り替えるので日本語(JIS)配列が必須
  • パンタグラフとかロープロファイルみたいに厚みは薄め
  • エルゴノミクス系の腕をハの字におけるやつ
  • テンキーはマウスが遠くなるので嫌い
  • ファンクションキーはほしい
  • できれば2台のPCで接続を切り替えできるとなお良し

(我ながらワガママなな条件・・・)

いまはMX KEYS miniを使っているけれど、一時期はMicrosoft製のエルゴノミクス系のやつを使っていたこともあって(製造終了してしまった)、あの腕をハの字で置けると楽な感じがよかったなーと。おなじロジでERGO K860とかあるのだけれどテンキージャマだしヘンなパームレストが固定で付いてるしでいまいち買う気にはなれなかった。

で、最近は自作キーボード界隈でアリスレイアウトというのがあるのを知って、こういうのもありかなーなんて探していたら、あるじゃん、よさげなのが。テンキーレスでロープロファイルでJIS配列のが。しかも無線で複数の接続を切り替えられる。

Keychron K15 MAX (JISレイアウト)

割と最近リリースされたらしい。英語配列とか、ファンクションキー無しのK13 MAXとか、かなり細かくバリエーションがあるようだ。

・・・で、買ってしまった。
のでレビューを書いてみる、と。

本体と付属品
本体と付属品

付属品に、USBケーブル(A <-> C)、USB変換アダプター(A <-> C)、Windows用のキーキャップ(写真は装着済み、Mac用のキーキャップを外してある)、2.4GHz無線の専用レシーバー、キーキャップ外しとスイッチ外しの治具。マニュアルはちゃんと日本語のが付属していた。

パッケージの写真
パッケージの写真は英語配列が・・・

Amazonで注文して届いたパッケージを見たら英語配列でおや・・・?と思ったが、右上の型番にはJISという文字が。中身はちゃんとJIS配列でした。

ホットスワップ対応のタイプにしてみた。スイッチは赤軸。

キースイッチ
キースイッチはこんな感じ

タイプ音はメカニカルにしてはかなり静か。底打ち音や離したときの音も響かずに控えめにコトコトと言う感じ。さすがにパンタグラフタイプみたいなほぼ無音というほどではないけど。たぶんこれならオフィスで使ってもうるさいとか言われることは無いんじゃないかと。

サイズ比較
手近にあったキーボードとのサイズ比較

高さ比較
低い側の端どうしで高さの比較

MX KEYS miniは職場に持っていってしまっているので、手近にあったテンキーレスでメカニカルのK855でサイズ感の比較。本体の縦横寸法は結構近い。高さはK15のほうが半分ぐらいの高さに収まっている。

キーマップもかなり自由に変更可能。デフォルトだとちょいちょい使うPrntScキーがなかったりするのでいじってみた。

左端M1 → PrntSc、右B → R Ctrl、右Space → Enter、右Alt → fn

fnキー同時押しのマッピング。fn+右スペースをBSにしてみたり、
右手ホームポジションにカーソルキーを割り当ててみたり。

fnキー同時押しのマッピングをホームポジションから動かずにいろいろ出来そうな感じに設定してみたけど、慣れるのに少し時間かかりそう・・・

なにはともあれ、かなりいい感触なのでこれからこいつを使いこなしていければなー、という次第。

2024/09/15

Nubia Pad 3Dで撮影した動画をPCサイド・バイ・サイドに変換する方法(Windows)

 Nubia Pad 3D、たまーに引っ張り出して遊んでます。90過ぎてだいぶ外出もおっくうになった祖母に山で撮影した風景や植物の写真を見せたら、ほんとに行って見てきたみたいだー、と楽しんでくれていた様子。

まぁそれはともかく、タイトルの件。

撮影した動画はmp4形式なのだけれど、サイド・バイ・サイドではなく、片側ぶんの映像がメタデータとして埋め込まれた変則的なフォーマットになっている。Nubia Pad 3Dで再生すると3D動画として再生されるが、PCなどにコピーして再生すると普通の2D動画として扱われる。(開発元のLeia社は「LVF」フォーマットと呼んでいるらしい。)

で、やりたいのは、Nubia Pad 3Dで撮影した3D動画をPCに持っていって、そこからMeta Quest 3で3D動画として再生、試聴すること。

そのためには、どうにかしてこの特殊なLVFフォーマットの動画を3D動画として扱いやすいサイドバイサイド形式に変換したい。で、調べてみると、こんなのが出てきた。

Leia.inc, Convert from LVF to SBS
https://forums.leialoft.com/t/convert-from-lvf-to-sbs/2825

FFMPEGというコマンドラインの動画編集ツールと、ここに掲載されているFFMPEGを使ったシェルスクリプトで、LVFフォーマットの動画をSBS(サイド・バイ・サイド)形式や、左右単独の動画ファイルに変換できるらしい。

で、このシェルスクリプトはMac(とLinux)用に書かれているので、Windowsで実行できるようにちょっとだけ手を加えて試してみたところ、上手くいくようだ。せっかくなので、それをここに掲載しておきます。

FFMPEGのインストール方法とかは割愛。環境変数にパスを通すのを忘れずに。

サイド・バイ・サイド変換用スクリプト

下記の1行だけのスクリプトをテキストエディタ(メモ帳でOK)にコピペして、lvf2sbs.bat みたいな名前で保存します。(ページ幅の都合で行が折り返されているかも。)

ffmpeg -i "%1" -filter_complex "[0:v:m:language:abl]fps=30[l];[0:v:m:language:abr]fps=30[r];[l][r]hstack" -c:a copy "%~n1_2x1.mp4"

左右の独立した動画に分離して書き出すスクリプト

下記の3行のスクリプト。おなじくテキストエディタにコピペして lvf2lr.bat みたいな名前で保存します。

ffmpeg -y -i "%1" -map 0:v:m:language:abl -c copy left.mp4
ffmpeg -y -i "%1" -map 0:v:m:language:abr -c copy right.mp4
ffmpeg -y -i "%1" -c copy audio.aac

スクリプトの使い方

コマンドラインで、ファイルを出力したいフォルダへ移動してから、下記のように上記のスクリプト(バッチファイル)を実行します。

C:\> /folderOfScript/lvf2sbs.bat /folderOfVideo/nameOfVideo.mp4

例えば、上記のように C:\ 直下で実行したら、そこにサイド・バイ・サイド形式に変換された.mp4形式の動画ファイルが出力されるはず。

2024/06/01

Nubia Pad 3D / How to convert LeiaCam 3D photos to SideBySide (SBS) format / LeiaCamで撮影した3D写真をサイド・バイ・サイド形式に変換する

 前回の記事で、Nubia Pad 3Dで撮影した画像が独自のフォーマット(アプリ内では"LIF"形式と呼称していた)なので扱いにくい、と書いたのだけれど、アプリをいじっていたら、サイド・バイ・サイド(SBS)形式に変換する方法が用意されているのを見つけた。

(英語でもこのやり方の記事を見つけられなかったので、
ちょっとだけ英語でも書いておく。)

まず、LeiaPlayerアプリを起動して、Nubia Pad 3Dの3Dカメラで撮影した画像を表示させたら、画面右上の共有ボタンをタップする。

Launch the LeiaPlayer application, and show the photo  taken  by the Nubia Pad 3D's camera, tap the Share button in the upper right corner of the screen.

すると、画像のフォーマットと共有先の選択が出てくるので、SBS(サイド・バイ・サイド)を選ぶ。「印刷先」(翻訳ミスだろうけど、共有先)は「・・・」を選ぶ。

You will be asked to choose the format of the photo and the destination to share it with, so choose SBS (side-by-side). For destination to share, choose “...”.

アプリの一覧が出てくるので、「Files by Google ダウンロード」をタップすると、端末のストレージ内の「ダウンロード」フォルダにSBS形式に変換された画像が保存される。

A list of applications will be shown, so tap “Files by Google Download”. The photo will be converted to SBS format and saved in the “Downloads” folder in the storage of the device.

写真を一枚ずつ変換する必要があるので、SBSに変換したいファイルがたくさんあると面倒くさいのが欠点ではあるが、これがいちばん確実な方法だと思う。


2024/04/24

nubia pad 3D レビュー(いまさら

 「nubia pad 3D」という裸眼での3Dディスプレイ(仕組み的にはNintendo 3DSに搭載されているやつの大型版みたいなのっぽい)が搭載されたタブレット。

発売されたのは1年ぐらい前なのだけれど、定価で20万ぐらいしていて手が出せずにいたのだが、ふと思い出して探してみたところ、中古で良い状態のが出ているのを見つけて、とうとう買ってしまった。まぁ、ハイスペックなスマホとかタブレットならこのぐらいの価格だし・・・(という自分への説得)

改良された新型が最近発表されたようで、もしかしたら旧型の方の値下がりが始まっているのだろうか?というか、こんなマニアックなジャンルで新型が出るのも驚きではあるが。

余談だがこれ用のケースを探したのだが見つからなかった。Amazonで探すとそれっぽいのがいくつか出てくるが、掲載されてる写真に映ってるタブレットの形状がこれと微妙に違っていてなんか怪しい。国内の別なサイトで購入しようとしたら、まさかの検品で不良が見つかって在庫もないのでキャンセルさせてくれと連絡が来てしまった(いやちゃんと検品して不良品チェックしてくれるのはとてもありがたいのだけど)。

nubia pad 3D の外観
nubia pad 3D

3Dディスプレイ

裸眼の3Dディスプレイについては、なかなか出来が良い。12.4型の十分に大きなディスプレイでの3D表示は、はっきりと奥行きが感じられるし迫力もある。

専用のビューアーアプリ「LeiaPlayer」が入っており、搭載されているステレオカメラで撮影した画像や動画は当然のことながら、普通の2D画像をAIで3Dに変換したりも可能(オフラインでも機能するので、デバイス内で変換処理は完結しているっぽい)。

おもしろかったのが、「LeiaTube」という専用アプリを使うと、YouTubeなど動画投稿サイトに掲載されている3D動画や3DVR動画も3Dで表示させることができること。ついつい動画を漁ってしまう。

スピーカーが4基搭載されていてDolby Atmosに対応していて音も良いので、3Dに限らず普通に動画を見るのにも使える。

欠点としては、2Dから3D表示に切り替えたときに幾分か暗くなってしまうとか、明暗の大きい画像だと3D表示の時に多少の残像(例えば右目の映像に左目用の映像の残像が被って見える)が見えたりする。まぁじゅうぶん許容範囲内ではあるし仕方ないのかもしれないが、新型ではディスプレイが改良されるらしいので、このへんも改善していることに期待したい。あとは重量が約790gほどあるのでそこそこ重たい。

ステレオカメラ

背面のメインのステレオカメラ(上の写真にも写っている)と、ディスプレイ上部に内向きでサブのステレオカメラが搭載されている。

背面のカメラのベースライン長(2つのカメラの間の幅)は30mm。なので人間の目の間隔と比べると半分ぐらい。撮影した画像のサイズは3840x2400pxになる。

内向きのカメラはベースライン長15mmでメインカメラの半分。撮影した画像のサイズは3264x2040pxになる。

メインカメラはベースライン長が狭いので、これで撮影した写真は人間の目と比べて視差が小さくなり目で見た感覚と比べて立体感が弱くなるので、被写体が数m程度ならそこそこの立体感は出るけれど景色など遠景には向かないかも。

でけれど経験上こういうカメラだと、1m未満のような近距離での撮影に向いている(逆にベースラインが長いと視差が大きすぎて違和感が強くなる)ので、植物や動物に近づいて撮影したり、小物やフィギュアなどを撮影したりとか、これはこれで向いてる用途がある。

内向きのサブのステレオカメラは、3Dディスプレイでユーザーの顔を検出する用途も兼ねているらしいが、普通に自撮りにも使える程度の性能があるようだ。専用アプリを使うと、nubia pad 3Dユーザー同士で3Dのビデオチャットが出来るらしい(が、こんなマニアックなデバイスを持っているユーザーがそんなにいるわけもないので出番は・・・)。

撮影した画像のフォーマット

撮影した写真の画像ファイルを取り出してみると、一見して普通の2DのJPEG画像に見える。サイド・バイ・サイドというわけでもない。調べてみるとJPEGベースの特殊なフォーマットになっているらしく、もう一枚の画像が詰め込まれているらしい。

ここの動画で説明されているツールでなんとかそのもう一方の画像を取り出せた。
https://www.youtube.com/watch?v=tDpxqZ2evyA
が、なかなか面倒くさい。

カメラアプリで保存するフォーマットをサイド・バイ・サイドかMPO形式あたりを選択できるようにしてくれたらありがたいんだけどなぁ。

撮影した動画はMP4形式だが、こちらも写真の方と同じく、一見して普通の2Dの動画に見える。独自フォーマットで片側の映像チャンネルが埋め込まれているらしい。これもツールで分離しないと、nubia Pad 3D以外ではステレオで再生できないっぽい。

他のデバイス等で撮影したステレオ画像への対応

実はこれが一番お目当ての機能だった。現状だとステレオの動画や画像を見るには、VRヘッドセット(Questとか)とか、スマホでもそれようのゴーグル的なのを使えばいけるのだけれど、どっちにしても着脱が面倒くさかったり操作がめんどくさかったりする。(Quest3+アプリでステレオ画像や動画を見ると画質も良く迫力があって楽しいのだが。)裸眼で見れると、手軽だし、何より人に手渡しして見せることもできる。

で、いろいろ試してみた。

MPOファイル:○
FinePix Real 3D W3 で撮影した画像をnubia Pad 3Dにコピーしたら、内蔵のビューアーアプリ「LeiaPlayer」で何の手間もなく3D表示可能。

サイド・バイ・サイドJPEG : ○
QooCam EGO 3D で撮影した画像で試した。自動で3D画像と認識してくれるものと、そうで無いものとがあっていまいち安定しない。が、ファイル名の末尾に _2x1 と付けておくと(例 : hoge_2x1.jpg)サイド・バイ・サイドの3D画像だと認識してくれる仕様がある。・・・が画像の数が多いとファイルのリネームが面倒くさいのが欠点。

FinePix Real 3D W3 で撮影した動画(.avi形式):×
対応していないらしい。全く見れなかった。これは正直ちょっと残念だった。

サイド・バイ・サイドMP4動画:○
QooCam EGO 3Dで撮影した動画で試した。これはしっかりと3Dで再生された。こちらも、ファイル名の末尾に _2x1 と付けておくとサイド・バイ・サイドとして認識してくれる。

まとめ

価格がネックではあるが、貴重な3D表示デバイスとしては十分な性能を備えていると思う。少なくとも自分は過去にFinePix Real 3D W3で撮った写真をごっそりこのタブレットに入れて眺めながら結構な時間を潰すぐらいには使えた。

ステレオカメラも、ベースライン長が肉眼の半分程度しかないという弱点はあるが、中~近距離の範囲なら全然使えるレベルだと思う。むしろ近距離の撮影が得意だと思う。タブレット自体がそこそこ重たくてかさばるのでガンガン屋外に持ち出して撮影するというのはちょっとツライかもしれないが。

2023/12/24

Logicool MX ERGO をベアリング化してみた

 最近エレコムからベアリングでボールを支持するトラックボールが発売されるらしい、
とかいう記事を見かけたのだが、
発売日を過ぎても店頭でも見かけないし
Amazonも品切れでレビューの一件もないしでなんかヘンだなと思っていたら
どうやら発売延期になっているらしい。

で、そんなことをぐぐったりしながら調べていたら、
LogicoolのM570をベアリング支持に改造したとかいう記事を発見。

で。
自分もやってみたという話。

今回改造したのは、
だいぶ年期が入ってきてボールの回転が渋めになってきて気になっていた
Logicool MX ERGO。
ちょうど2年ぐらい前の記事で表面のゴムを張り替えたやつ。
(まだそのときの滑り止めシートが貼ってあるけど、
だいぶ劣化してきたのでそろそろ張り替えどきかな・・・)

先人の記事を参考に、
Amazonとかで材料を調達。
肝心なのはこの2つ。

その他、
・補強用のエポキシパテ(タミヤの板ガムみたいなのをコネて使うアレ)
・瞬間接着剤と先細ノズル
・瞬間接着剤の硬化スプレー
・穴開け用の1mm、3mm、5mmのドリル歯
・#400ぐらいの紙ヤスリ
・潤滑油スプレー(KURE 5-56)
... etc.

今回使用した道具類
今回使用した道具類(の一部)

GodHandのスピンブレードは、結構よく切れるので
小型の彫刻刀みたいな使い方で削ったり掘ったり便利なので
何かとよく使う。
今回は軸の1.5mmと同じ幅のブレードがあるのでそれを使う。

この硬化スプレーは比較的匂いがマシ。(とはいえ換気には気を付けること)
これがあると瞬間接着剤を盛ってしっかり固めるという使い方が出来るようになる。

まずは分解してボールを納める部分を取り出し、
センサーも外してから、
支持球を削り取り、ベアリングを納める穴と軸を固定する溝を掘る。

穴開け加工中の様子
穴開け加工中の様子

削る作業には、前述のスピンブレードでゴリゴリ削った。
で、支持球があった部分に1mmぐらいの穴を貫通させて、
3mm → 5mm と広げていく。
で、穴の両側にベアリングの軸を納める溝を掘る。
下側の支持球の裏側あたりにある突起は邪魔になるので切り取る。
本体側にも同位置に突起があるので切り取っておく必要がある。

プラスチックの厚みが1.5mm程度なので、
軸の溝を掘ると貫通するので裏にエポキシパテを盛って補強しておく。
パテを盛る前に軽くヤスリ掛けしておくと食いつきが良くなる。
パテは1~2mm程度の厚さにしておき、
本体に組み付けながら干渉しないように様子を見ながら盛っていく。
前方側のあたり、ちょうど「戻る」ボタンのあたりはスキマが少なく
あんまり盛れないので注意。
パテを盛ったら硬化のため1日待つ。

裏にパテを盛って補強
裏にパテを盛って補強。

ベアリングは、軸に真鍮線を通す。
ベアリングを納める穴の直径が5mmなので、軸の長さは9mm程度にしておく。
キツくてベアリングが通りにくい場合は真鍮線を軽くヤスリ掛けして調整。
ベアリングが軸上を動かないように瞬間接着剤をわずかに付けて固定。
硬化スプレーで固める。ベアリング内部に接着剤が入らないように注意すること。

軸を通したベアリングをいったん仮で組み付けてみて、
ボールを乗せてみたり本体に組み付けてみたりして様子を見ながら微調整。
大丈夫そうならベアリングの軸を瞬間接着剤と硬化スプレーで固定。

本体を組み立てる前に、
ベアリングに潤滑油(5-56とか)のを入れておくと回転が良くなる。

・・・

そんなこんなで出来上がったのが下の動画。
ボールを転がした様子を素のM575と比較してみた。

軽く転がしたときの様子が明らかに違う。
M575のほうはボールがすぐに止まるが、
今回改造したベアリング版のMX ERGOのほうが慣性でスルスルと回る。
感触としても、動き始めに全然抵抗がなくスルスルと回る。

あと音。
結構シャーシャーと音が鳴る。
ゆっくり動かしていればそれほどでもないけど、
勢いを付けると、それなりに大きい音が鳴る。
動画の音を聞いてみれば、M575の普通のトラックボールの音と比べても
明らかに大きい音が鳴っているのがわかる。
職場とかでシャーシャー鳴らしてたらうるせぇと言われるかも・・・。

今回はとりあえず年季の入ってきたMX ERGOのベアリング化改造が
上手くいったので満足。

2023/07/14

Azeron Cyborg用 Adjustable Magnetic Standを使ってみた

 久しぶりにAzeronの公式ストアをのぞいてみたら、
いつの間にやら、Cyborg用のアクセサリで面白そうなのが出ていた。
どうやらCyborg用の傾斜を付けるスタンドらしい。

Adjustable Magnetic Stand
https://store.azeron.eu/merch/product/magnetic-stand

たしかに、Cyborgを長時間使っていると
手首が少々ツライと感じることがあるので、
なかなかいいかもしれない。

ついでに、

BUTTON GRIP TAPES
https://store.azeron.eu/merch/product/button-grip-tapes

とか、予備パーツ(まだ壊れてないけど念のため)を
まとめて購入。
円安の影響で割高感は否めないけど・・・

配送は急がないのでPASTSを選んでみる。

・・・で、待つこと2週間ほどで到着。
6/30にラトビアから発送されて、7/13に到着。
国内の配送は日本郵便が請け負っているらしく、
郵便で配送されてきた。

Adjustable Magnetic Stand
Adjustable Magnetic Stand

スタンド本体と、付属のネジ締め用レンチ(?)。
オマケでAZERONキーホルダーが付いてた。

Button Grip Tapes
Button Grip Tapes

こちらはボタン用の滑り止めシール。
いくつか色や柄を選べるのだけど、
ちょっと派手なのを選んでみた。

スタンドのヒンジ部分
スタンドのヒンジ部分

スタンドのヒンジ部分がジグザグになっていて、
ネジを締めることで角度が固定される仕組み。

Cyborg本体とスタンドの接続
Cyborg本体とスタンドの接続

Cyborg本体とは↑こんな感じで組み合わせる。
(うちのCyborgはゴム足を追加したりネジにワッシャーを追加したりしてる)
スタンド側の黒い突起が、本体裏側の穴(奥にネジがある)に
ぴったりとはまり、3つの磁石でくっつく。
磁石は結構強いので、そう簡単には外れなさそう。

Cyborg + Adjustable Magnetic Stand
Cyborg + Adjustable Magnetic Stand

組み合わせるとこんな感じ。
パームレスト部分には適当な滑り止めシートが貼ってある。

先端部分がスタンドからはみ出してはいるが、
重心は手のひら側にあるので安定感に問題は無い。

ひとしきり使ってみたが、
角度が付くことでの違和感はほとんど無いし、
スタンドのおかげで手首が楽になった。

ボタンも素の状態だとけっこうツルツルしていて、
特に奥のほうのボタンはツメで押すことになるので滑りやすいのだけれど、
ツメが当たったときの感触が柔らかくなって滑らなくなり、
なかなか良い感触になった。

これでまた少しゲームが楽しくなりそうだ。

2022/09/11

IKVM (revived) の使い方

前回の記事でIKVMが復活しているというのを書いたけれど、その続き。
具体的な使い方について。

Visual Studio 2022のNuGetから「IKVM」で検索して
簡単にインストールできるまでは良いのだけれど、
そのあと、どうやって .jar (Javaのコンパイル済みファイル)を
.net用のdllに変換するのか、というあたり。

ikvm-revived のGitHubのリポジトリにある
README.md の「Usage」(使い方)にざっくり書いてあるのだけれど
いまいちわかりにくいので簡単に。

NuGetからIKVM(バージョン8.2.0以降、「最新の安定版」と表示されているあたりを選択するのが無難)をインストールしたあと、
VSのソリューションエクスプローラーで
プロジェクトファイルを右クリック > 「プロジェクトファイルの編集」を選択。


XML形式でプロジェクトの設定が記述されたファイルが開くので、
前述のGitHubにあるREADME.mdの「Example」に書いてあるように、

<ItemGroup>
  <IkvmReference Include="変換したいjarファイルのパス" />
</ItemGroup>

と追加する。
だいたいこんな感じになる。

(上の画像は、Apatche Tikaからダウンロードしてきたjarファイル。)

jarファイルの置き場所は多分どこでもいいけど、
プロジェクトのフォルダ内に置いとくのが無難かも。
パスは絶対パスか、もしくはプロジェクトファイル(*.csproj)からの相対パス。

この状態でビルドすると、
出力ディレクトリに、jarから変換されたDLLが生成されるはず。

(Tikaはサイズが58MBもあるので変換に少々時間がかかった・・・)


・・・というような感じで、
.jarファイルから.net用のDLLを生成できる。

上記の変換だけを行うプロジェクトを作っておいて、
そこで変換したDLLを、
実際に使いたいプロジェクトのほうにコピーして使うのがいいのかもしれない。
(そっちにもNuGetでIKVMをインストールする必要があるので忘れずに。)

2022/08/29

復活のIKVM

以前、JavaのライブラリをC#から利用可能にしてくれる
IKVM というのについて書いたけれど

C# (.NET)でMS Officeファイルを扱う - Apache POI & IKVM
https://glsharp.blogspot.com/2020/05/c-netms-office-apache-poi-ikvm.html

ちょっと用があって、
久しぶりにまたVSのNuGetからIKVMを取得しようとしたら・・・

おや、なんか見覚えのないバージョン?
しかも公開日が7月、プロジェクトURLが「ikvm-revived」・・・
もしかして復活した・・・?

ということで、
NuGetに掲載されているプロジェクトURLに行ってみると、
https://github.com/ikvm-revived/ikvm
ほんとに復活してるらしい。
現在開発が進行中で頻繁に更新されているっぽい。

プロジェクトのReadMeに
使い方が書いてあるっぽいのだけど
いまいちよくわからないので調査中。

一点だけ要注意。
Visual Studio 2019だと、
NuGetからのインストールに失敗する・・・どころか、
プロジェクトファイル(.csproj)自体が壊れるっぽい。

2022のほうだと大丈夫のようだ。
必ずVisual Studio 2022を使うこと。

2021/12/06

Logicool MX ERGO ラバーの張り替え

3年ぐらい前に購入してずっと使っていた
LogicoolのMX ERGO、
手のひらを載せる部分の表面がゴム製で滑りにくいようになっているのだけど、
そこが劣化してボロボロになってきた。

動作的には不具合は無いのだけど
ラバーの劣化だけで買い換えるのも
もったいない(そこそこの価格だし)ので、
どうにか補修できないかという話。

まずはとりあえず、劣化したラバーを剥がしてみる。
端っこをつまんで引っ張ると案外簡単に剥がれる。
接着剤は使っていないようで、綺麗に剥がれる。
ただし、ラバー自体は2~3mmぐらいの厚みで、
剥がしたままだと厚み分の段差がのこる。

とりあえず、
ラバーを剥がしてできた段差が手に当たって気にくわないので、
パテで埋めて見たのがこの状態。

MX ERGO、ラバーを剥がして段差を埋めた状態

プラモデルの作成とかでちょいちょい使っている
「プラリペア」を使用。
粉末に専用の溶剤を加えて20分ぐらいで硬化する。
写真の白い部分がそれ。
段差の部分に適当に盛って、
凹凸をざっくりとヤスリ掛けしただけ。

この状態でもまぁまぁ使えるのだけれど、
手のひらが滑るし、
何より見た目が雑。

ということで、
マウスなどに貼り付ける用途の
滑り止めシートというのがあるようなので、
それを貼ってみた。


使ったのは、
Amazonで見つけたこれ。


マスキングテープ(というかシート)が付属しているので、
まずは貼り付ける場所にマスキングテープを貼って
それで型をとる。
型を取ったマスキングテープをそっと剥がして
滑り止めシート本体に貼って切り抜き、
MX ERGOに丁寧に位置を合わせながら貼っていく。

シート自体は柔軟性が有るので、
上手く伸ばしながら貼れば曲面にも貼れる。
感触は薄い発泡ゴムのような感じ。
2枚入っているけれど、
ギリギリ1枚でも足りる。

2021/09/23

Azeron Cyborgのセットアップとレビュー

G13みたいな左手用デバイスの話題で
「Azeron」というのを耳にしたので調べてみたのだけど、
なかなかすごいらしい。

Azeron
https://www.azeron.eu

形状がかなりキワモノというか、
キーボードとは思えない形をしているのだけど、
人間の手の形に合わせてボタンを配置してるらしい。

で、こればぜひ手に入れてみなければと思ったのだけれど、
webサイトを見に行ったのが7月中旬頃で、
ちょうど新型の「Cyborg」というタイプの予約が始まっていたので、
さっそくそれを注文。

それがついに先日届いたので、
いろいろいじってみた感想などを。


パッケージ

まずはパッケージ。

パッケージの外箱
パッケージの外箱

パッケージと一緒に
Quick Guideの紙が一枚同梱されていた。
マニュアル的なのはwebサイトに置いてある。
(Quick Guideの右上のQRコードが読み込めなかった・・・)

パッケージの中身
パッケージの中身

中には、デバイスがシンプルな包装で収まっていた。
付属品は
USBケーブル、
ドライバー、
アナログスティックの交換用キャップ、
予備のネジ。

デバイスの外観
デバイスの外観

私のデバイスのカラーはこんな感じ。
カラーは、追加料金無しでもある程度好きにカスタマイズできて、
有料オプションで細かく指定することもできる。
たしか1カ所だけ色指定を追加したはず。

細部その1、アナログスティック周辺
アナログスティックの周辺

3Dプリンターの積層模様
3Dプリンターの積層模様

ロゴ部分
ロゴ部分

3Dプリンターで製造しているらしいのだけど、
積層模様がそのままになっている。
何というか、打ちっぱなしのコンクリートの壁的な感じ?
独特な模様はこれはこれで有りなんじゃ無いかと。

付属品のドライバー
付属品のドライバー

けっこうしっかりした造りのドライバーが付属している。
こいつでゴリゴリとデバイスの調整をしていくことになる。


セットアップ(物理)

セットアップ、まずは物理での調整。
ここがこのデバイスが他と大きく違うところ。
各部の位置や角度を自分の手に合わせていく。

調整箇所が多すぎてどっから手を付けていいのか迷うのだけど、
まずは親指から順に位置を調整、
それからチルトを調整、
という順序が無難かと。
まぁ、一度でピタッとは調整しきれないので、
あとから何度も調整を繰り返すことになるけど。

自分の場合、あれこれいじっていたら、
気がついたら1時間以上過ぎてた・・・いやホントに。

一点だけ注意。
USBのコネクタはしっかり奥まで差し込むこと。
構造的に、コネクタ部分が内側に埋まっていて
きちんと刺さっているのか確認しにくいのだけど、
端子の持ち手部分の7割ぐらいが埋まるぐらいまで差し込まないと
ちゃんと接続されない。

USBケーブル接続部分
USBケーブル接続部分

自分も最初はこれで引っかかって、
なぜPCで認識されないんだと結構焦った・・・。

ちなみにマニュアルにも同じ事が書いてある。
後から気づいたけど。


セットアップ(ソフトウェア)

物理での調整が一段落したら、
次はソフトウェアのほうのセットアップ。
ドライバソフトは、Azeronのサイトからダウンロードできる。

https://www.azeron.eu/downloads/

ここの「Azeron Software」というやつ。
バージョンにBETAと書いてあるのが少々気になるけど・・・。

インストールしたら、
まずはめっちゃ明るく光っているLEDの輝度を変えるのがおすすめ。
画面左の「Settings」を選択して「LEDs」の項目で変更できる。
デフォルトだと輝度maxで超まぶしい。

アナログスティックの調整

次はアナログスティックの調整。
同じく「Settings」内のたぶん一番下の
「Analog Joystick Hardware Calibration」から。
最初にスティックを触らない状態で数秒置いて、
そのあと円を描くようにゆっくり動かせと言われるので
それに従って動かすだけ。

アナログスティックのキャリブレーション
アナログスティックのキャリブレーション

ただし、ここでのキャリブレーションは、
スティックの初期位置と可動範囲のキャリブレーションのみ。
スティックの物理的な位置によって、
どっちが上なのかの向きを調整する必要があるのだけど、
それは各プロファイルのほうで設定する。

アナログスティックの設定
アナログスティックの設定

プロファイルのほうは、
箱コン、一般的なジョイスティック、
キーボード(WASDとか方向キーにバインドできる)
とかいろいろモードを割り当てられるのだけど、
その下の「Angle」が重要。

この「Angle」でスティックの向きを合わせる。
これをちゃんとやらないと、
ゲームでキャラがヘンな方向に走ってしまう。

「Lower & Upper Deadzone」は、
スティックの遊びと、最大値になる傾きの位置を設定する。
遊びのほうはキャリブレーションでも設定されているので、
左側のスライダー右に動かすと、
さらに追加で遊びの範囲が設定される。
右側のスライダーを左に動かすと、
スティックをめいいっぱい倒さなくてもその位置で最大値になる。

そのほかのキーバインドは、
特に難しい部分はないかと。

ただ、個人的には、
なぜか PRTSC(プリントスクリーンキー)が割り当てられないのが
不満な部分。



reWASD

いろんなデバイスのキーバインドを変更できる
「reWASD」というソフトウェアがあるのだけど、
これがAzeron Cyborgに正式に対応している。
これを使うと、さらに複雑なキーバインドを設定できる。

reWASD
https://www.rewasd.com

reWASDの詳しい使い方は他に譲るとして、
reWASDでAzeronのキーバインドをするに当たっての注意点。

reWASDはAzeron Cyborgを排他的に制御するので、
Azeron Softwareでのキーバインドは無効になる。
ただし、Azeron Software側で幾つか設定しておく必要がある。

1. Settingsの「reWASD support」オプションをONにしておく。

Azeron Softwareの設定
Azeron Software - Settings

2. On-Board Memoryの2つのプロファイルについて、
アナログスティックの角度などの設定だけはreWASDから参照されるので、
そこだけはAzeron Softwareで設定しておくこと。
(reWASDでスティックの角度は調整できない。)
reWASDのヘルプに記載されている。
https://help.rewasd.com/how-to-remap/supported-devices.html#azeron


慣れるまで頑張る

キーバインドなど一通り設定が終われば
いよいよ実戦投入・・・なのだけど、
だいぶ形状が独特なので、
使い込んで手を慣らす必要がある。

確かに特殊な配置のおかげでボタンは押しやすいのだけど、
それと実際に使いこなせるかどうかは別物。

少なくとも使い始めて2日目のAzeron初心者の自分は
まだまだ思ったように指が動かない・・・。
でも使いこなせれば
かなりいいデバイスになるはずという手応えは感じる。

2021/04/25

「シンプルな(すぎる)画像ビューワー」更新

HPのほうで公開している 「シンプルな(すぎる)画像ビューワー」
すごーく久しぶりに更新。

少しだけ機能を追加しました。
画像の表示順を変更できるようになりました。
ファイル名、作成日時、更新日時の昇順 / 降順を設定できます。


・・・ちなみに、最近、
諸用で新規に購入したWindows10、64bitのPCに
旧バージョン(1.3)をインストールしてみたら、
正常に動作しないことが発覚 orz
どうやら同梱のファイル(DLL)に取り違えのミスがあった模様。
ちゃんと動作テストしてたと思ったのだけど、どこで間違えたのやら。
しかも長いことそのまま放置してたのね・・・。
もし、動かねーじゃん、という方がいたら失礼しました。


2021/03/10

Logicool G13 スティック付近のスイッチの交換

また続いてLogicool G13の修理。

以前、スティックのそばにある2つのスイッチの片方(下側)がチャタリングを起こしていたので、接点復活剤でなんとかなっていたのだけど、最近またチャタリングを起こすように・・・

で、とりあえずまた接点復活剤を使ってなんとか改善したのだけれど、これはそろそろ交換しないとアカンかなと。

G13 ジョイスティックの基板
この写真の、スティックの下と横にある長方形の小さいスイッチ。

だがしかし、いろいろと探してみたのだけど、なかなか見つからない。

で、あるとき、それとは別にG13の乗り換え先としてRazerのアレとかコレとかどうなの? とか調べているときに、ORBWEAVERを修理している記事の写真に、似たような部品が映っているのを発見。実はだいぶ前にORBWABERは試しに買ってみた(が、いまいちでお蔵入りしていた)ものが手元にあったので、引っ張り出して分解、実物の該当部品を確認してみたところ、寸法も端子形状もG13のヤツとぴったり同じで、互換性がありそうだぞ、と。

Razer ORBWABER サムパッドの基板
Razer ORBWAVER のサムパッド部分の基板

ORBWAVERはちょっとお高いので、さすがにこれから部品を取るのは気が引けるので、修理記事にあった互換品を探してみた。

写真のはOMRONと書かれているけど、どうにもOMRON製の部品は見つからない。どうやらKailhという中国のメーカーのコレ ↓ が使えるらしい。

Kailh CMI873101D01-3 (メーカーのカタログページ)
http://www.kailh.com/en/Products/MS/MN/389.html

キーボードの交換用スイッチとかで時々聞く中国のメーカー。なるほど、キーボードだけじゃなくて、こういうスイッチも作ってるのね。

購入手段は、どうやら AliExpress しか無いっぽい?

10 個 kailh 高ミニマイクロスイッチで 10,000,000 サイクル機械的寿命 CMI873101D01
https://ja.aliexpress.com/item/4000343886996.html
レビューには、ORBWABERに使ったとかいうコメントがちらほら。
10個で$8.8(ざっくり1,000円ぐらい)。

この中国のwebストア、使ったことがなかったのだけれど、調べてみると、日本では見つけられないモノがいろいろあったりする一方で、いろいろトラブルが多いとかなんとか・・・。おっかなびっくりな感じでアカウントを作成、クレカを登録するのには若干不安を感じるので支払いはPayPal。配送方法は無料(ただし遅め)があるみたいなのでそれを選択。

注文して待つこと、約2週間で到着。ちゃんとストアで表示されていた日数の範囲内で届いた。

AliExpressから届いた部品と梱包。
乾燥剤が入っていたりして意外とちゃんとした梱包。

Kailh CMI873101D01-3 外観
スイッチ部品。上面にロゴが付いている。

Kailh CMI873101D01-3 中身
スイッチの中身。G13に付いていたものと、ほぼ同じ構造。
下敷きにしてあるのは、同梱されていたカード。

到着した部品を確認してみたところ、寸法や端子形状など、G13のスイッチ部品と全く同じ。押しボタンの部分が白い程度しか違いは無い。並べて比較してみた。

G13のジョイスティック基板と交換用スイッチ
G13の基板と、購入したKailh製のスイッチ。

問題無さそうなので、いざ交換作業。

G13のジョイスティック基板、スイッチを外したところ
スイッチを外したところ。
基板にちゃんとスイッチの向き(押しボタンの向き)がプリントしてある。

G13のジョイスティック基板、スイッチ交換完了
交換完了。
左下のが外した部品。よく見ると端子の根元が錆びている・・・

交換完了。
ジョイスティックの基板を本体に戻し、PCに接続しての動作確認も問題なし。

ということで修理完了。
これでまたG13を使っていけそうだ。


他のG13の修理記事:

ジョイスティックの可変抵抗器の交換
https://glsharp.blogspot.com/2021/02/logicool-g13.html

Logicool G13の修理
https://glsharp.blogspot.com/2017/04/g13.html


2021/02/15

Logicool G13 ジョイスティックの可変抵抗器の交換

 だいぶ前にもG13の修理のことを書いたけど、今度はジョイスティックの交換。

ニュートラル位置で若干グラついたり、時々ニュートラル位置がずれていたりするようになってきたので修理に挑戦してみた。

ググるなりしてジョイスティック部分の可変抵抗器の互換品を調べてみたのだけど、記事が古かったりして、これだというモノがなかなか見つからない。

で、
試しに手元にあったPC用のコントローラーをバラして互換性がある可変抵抗器が入ってないかと探してみたところ・・・

・・・あったよ、全く同じのが!

ロジクールのF310r

下の写真は、G13から外した可変抵抗(左側)と、F310rの基板に載ってるジョイスティックの可変抵抗(右側)。


若干のマイナーチェンジ程度の差はあるようだが、ほぼ同一の部品が使われているようだ。

プラスチック製のスティック部分はだいぶ形が違うので、試してはみたけどF310rのスティックはG13には収まらなかった。なのでスティック部分はそのまま既存のものを継続。

実際に交換してみると、問題なく動作した。ニュートラル位置のぐらつきなども無くなり快適に。

ただ、半田付け時に部品が微妙に浮いていたのか、スティックの半球みたいな形の部分が、G13のスティックが出る穴の裏側(この表現で伝わるんだろうか)にほんの少しだけ当たってしまうようで、可変抵抗のスティックを刺す棒状の部分の先端を少しだけ(1mm足らず程度)削ったら、うまく収まってくれた。

F310rならド定番のコントローラーで安価かつ入手性も良いし、都合の良いものが見つかって一安心。といっても、そうしょっちゅう必要になる作業じゃない(といいなぁ)けど。



他のG13の修理記事:

Logicool G13の修理

スティック付近のスイッチの交換


2020/05/25

C# (.NET)でMS Officeファイルを扱う - Apache POI & IKVM

C#でWordとかExcelのファイルを読み書きする手段としてはいくつかあるのだけど、無償で利用可能な手段だと、だいたいこの2つが定番っぽい。


Microsoft.Office.Interop

Microsoftが提供している、Visual Studioに付属するライブラリ。
ググればいくらか情報も出てくる。
導入も簡単。参照設定に追加するだけだし。

だけど、超遅い。
10ページほどのdocファイルからテキストを抽出するコードを書いてみたのだけど、
それだけでも5~6秒とかかかる。新しいdocx形式のファイルだといくらかマシなようだが。(2019年製のSSDにCorei5の安価なPCだったけど、それにしたってこれは重すぎる。)

扱うファイルが少数で、それほど実行速度が問題にならないならこれでいい。
さすがにMicrosoftが提供しているだけあって、図形の扱いなど複雑なこともできるのは利点かもしれない。


NPOI

Apache POI というJavaのOfficeファイルを読み書きするライブラリを.NETに移植したもの。
NuGetから導入できる。高速に動作する。

ただし、扱えるファイルの種類は xls, xlsx, docx の3種類のみ。
元のApache POIだと doc, ppt, pptx などOffice系のファイルは一通り対応しているのだけど、どういう理由か扱えるのは前述の3種のみ。
また、テキストボックスや図形などには対応できていないようだ。


で、問題は、

  • それなりの速度が欲しい
  • doc, ppt, pptx なども扱いたい
  • テキストボックスや図形なども扱いたい
という場合。

Java の Apache POI を .NET から呼び出せるようにすればいいんじゃね?
と思うのだが、それが難しいからこそ NPOI を作ってるんじゃないのかなー
とか思いつつ調べていたら、ずばりそういうのがあるようだ。



wikipedia
「Mono及び.NET Framework上で実装された、Java仮想マシンを含むJavaの実装」
「他実装と比べ2重の仮想化が行われるため速度面では不利ではあるが、.NET上からJavaの各種ライブラリ等をプログラミング言語レベルで一切意識せずに利用できる。」
だそうな。(wikipediaより)

2015年あたりで更新が終了してしまっているのが惜しいところか。
でもソースもバイナリも公開は継続しているので、利用可能。

使い方よくわかんないし、
だれかこれで Apache POI を .NET で使えるようにしたモノを公開してないかなー
とか日和ったことを考えながら調べていると、
・・・あったよ。NuGetにあるじゃん。



「poi」で検索するといくつかそれっぽいのがでてくるのだけど、
試してみたところ、作成者「qcat」さんの「poi」が使えるようだ。
(「poi-ikvm」という名前のもあるが、こちらは対応するファイル形式が限られていて、なんか半端なもの(失礼)のようだ。)

これをインストールすると、プロジェクトの参照設定に
「poi」に加えて「IKVM.~」というライブラリが大量に追加される。


Apache POI でググると情報はたくさん出てくるのに加えて、
JavaとC#は構文がかなり似ているので、それほど参考資料には困らないはずなので、
ここではPOIの使い方については省略。

ただ、実際に試してみると、docxファイルを開いたときにエラーが発生したので、その対処法について。
エラーの内容を見ると、なにかXML関連のライブラリの参照が足りてない様子。で、↑の画像の参照設定と、IKVMの公式サイトからダウンロードしてきたバイナリ一式(ver. 7.2.4630.5)を見比べてみると、XMLと名前の付くもので
  • IKVM.OpenJDK.XML.Crypto.dll
  • IKVM.OpenJDK.XML.Transform.dll
  • IKVM.OpenJDK.XML.WebServices.dll
  • IKVM.OpenJDK.XML.XPath.dll
の4つが足りてないようなので、これら4つのファイルを直接、参照設定に追加すると、無事にエラーが解消した。
(Visual Studio のソリューションエクスプローラーで「参照」を右クリック
→ 参照マネージャー左側の「参照」 を選択
→ 右下の「参照」ボタン(OKボタンのとなり)で、上記4つのdllを選択)

試してみると、wikipediaでは速度面では不利なんて書いてあるけれども、十分実用範囲内だと思われる。
10ページ程度のdocxファイルからテキストをすべて抽出するのに約200msほど、同じファイルをdoc形式で保存したファイルだと50msほど(なぜか旧形式のほうがずっと速い)だった。
もちろんファイルの内容やマシンスペックに依存するだろうが Microsoft.Office.Interop よりは断然速い。

この「qcat」さん製のPOIライブラリは、現在公開されている Apache POI (最新版は4.1 @2020年5月現在)と比べるとバージョンが古いのが難点か。

自前でApache POIをIKVMを通して使えるように、
あとでIKVMの使い方を調べておくべきかな。


※追記 @2020.05.31
POI+IKVMの実行時、内部で大量に例外をスローしているようだ。
例外処理はされているようなので途中でプログラムが落ちたりはしないが、デバッグ出力に大量にエラーメッセージのログが表示される。
このせいで重くなっているらしい。
デバッグ無しで実行すると、かなり軽くなる。
上で.docxファイルだと200ms、.docファイルだと50msほど、と書いているが、これをデバッグ無しで実行するとそれぞれ約50msとか約20msぐらいまで速くなる。