ばけものやしきログ

今のところエルデンリングプレイ日記+α

ロハでStream DeckみたいなことをしたくてMacro Deckを使ってみたけど日本語情報が無い(から作った)

日本語情報がざっと探した感じ、無さそうなのでまとめました。

ただ、私もすべての機能について把握しているわけではありませんので、今回使ってみてわかった箇所についてのみの記載となります。

公式wikiの情報が少なくて戸惑ったりしたので、なんかの助けになれば幸いです。

ちなみにMacro Deck自体はこんな感じでスマホからPC操作するアプリケーション。

経緯

(私事な経緯がつらつらなので特段見たくない場合は上の目次からスキップしてくだせ)

Elite:Dangerousのキー割り当てが足りないんですよ

Elite:Dangerous(以下エリデン)はいわゆる宇宙船のフライトシミュレーターなんですが、操作があまりに多くて、デフォルトで割り当てられていない操作もあるくらいで。

割り当てられていないもの(今回の場合は主にemoteを使いたかった)でも使いたいものはあるんです。でも、主要なキーは既にほかの操作に割り当てられていて、使えるキーが無い!

そこで一般的に出てくるのは、例えば[Shift]+[なんかキー]等の組み合わせですが、今度はキー割り当てが多すぎて何を割り当てたか忘れるんだなこれが。

キーに画像とか表示出来たら覚える必要ないんだけどなーと思ったらそういう製品がありました。

Elgato Stream Deck MK.2

https://www.amazon.co.jp/dp/B09738CV2G

お値段約24k。高えわ。配信業もしてないのにそんな出せないわ。

そこでこの者考えました。

スマホでもできそうじゃね?

で、そのあとMacro Deckに行きつくまで、GameGlassはデザインがちょっと~onfootがねえ~とか、power-grid EoLだとか、MATRICはサブスクプレミアムモードとか色々ありましたが、OSSなMacro Deckに着地しました。

導入

特に困らなかったからそんなに書くことない…。普通に公式サイト>DownloadからPC側のアプリケーション落として、スマホ側のアプリストアで「Macro Deck」で検索して落とせばOKでした。

◆Macro Deck公式サイト

https://macrodeck.org/

PC側はWindowsのみ、スマホ側はアンドロイドのみ、なのでご注意を。PC側は初回起動時、Firewallの許可が表示されるんで許可してあげればよいかと。

ポートはデフォルトで8191を使うので既に8191使用済みの場合はアプリケーション側から変更できるっぽい。その場合のfirewallは勝手にやってくれるかわからないので設定を見直したほうがいいかも。

接続設定画面。日本語表示がありがたい。

設定方法

 - PCとスマホ接続

PC側はMacroDeckを立ち上げていればOK。スマホ側は起動時に接続先を入力するか、ローカルNWから探してFound Devicesとして表示してくれます。大体はローカルNWから探してくれるので事足りるのではないかと。

接続不可の場合、こういうローカルNWのツールっておま環要素強いのでちょっとわからないですね。困ったらとりあえずfirewallとセキュリティソフトは確認したほうが良いかと思われます。

 - プラグイン

Macro Deckのいい所としてアプリケーションからプラグインをブラウズ、導入できます。

左側のパズルピースボタンを押下すると下記のようにインストール済みのプラグインとアイコンパック(後述)が表示されます。

上部の「Online」をクリックするとExtension Storeが表示され、この画面から使いたいプラグインを選択、インストールができます。

Hotkey割りあてをするのであれば「Windows Utils」が必要です。当初これがわからなくてね…探しました…デフォルトでできるもんだと思ってました…他、私はVoice Meeter Banana、Discordを使用しているので導入しました。(LogiのG hubは電池だけだし、メディアコントロールは結局使わなかった。でもdiscordもミュートくらいしかなくて結局使ってない。)

Discordプラグインは初期設定が必要です。

Discordプラグイン設定

discordプラグインgithubの内容をテキトー日本語訳にしてます。

GitHub - RecklessBoon/Macro-Deck-Discord-Plugin: A plugin for Macro Deck 2 to interact with a local Discord client

  1. Discord開発者ポータルにアクセス
    Discord Developer Portal
  2. 右上のNew Applicationボタンを押下
  3. "Macro Deck Plugin"とか適当な名前をつけてCreateボタンを押下
  4. 画面左側からOAuth2を表示し、「Redirect」の項目に"https://127.0.0.1"を記入
  5. Client IDとClient Secretをメモしておく
  6. 「Save Changes」ボタンを押下する忘れる人が多いらしい
  7. PC側でMacro Deckを起動、表示する
  8. 左側のタブからプラグインを表示する
  9. Discordプラグインの「コンフィグ」ボタンを押下する
  10. 表示されたポップアップにClient IDとClient Secretを入力する
    デバッグロギングは特には不要
  11. 「OK」ボタンを押下する
  12. discordを表示、起動していない場合には起動する
  13. アプリケーションが接続する許可を求められるので承諾する

MacroDeck左側のdiscordアイコンが点滅、もしくは青くない場合は接続できていないので、Disccordプラグインのコンフィグ等を見直してください。

 - アイコンパック

表示するボタンのアイコンもプラグインと同様にインストールできます。Extension Storeから画面左側の「Icon Packs」を選択すれば表示されます。

もちろん自作も可能で、自作の場合はボタンの設定画面からインポートができます。

 - 画面設定

MacroDeck左側一番上のアイコンを押下すると下記のような画面(というかこれがメイン画面)になります。

右下のグリッドからボタンの数、縦横(列の数と行の数を調整することにより)、ボタンの間隔、ボタンの角の丸みが変更できます。即時反映されるので好みで調整すればいいかと。

 - ボタン設定

ボタンを右クリックするとコンテキストメニューが表示され、そこから各ボタンの設定ができます。

ボタンの設定画面

外観

左上がボタンの見た目に対する設定です。
ボタンにアイコンを割り当てるにはまずはアイコンの画像をまとめたアイコンパックを作成する必要があります。

アイコンパック

鉛筆マークかボタン画像のあたりをクリックすることでアイコンパックの管理画面になります。初回は何も表示されていないと思うので、「+」ボタンを押下して適当な名前を入力し「OK」ボタンを押下しましょう。

アイコンパックの管理画面では画像からアイコンのインポートができます。

このアイコンは結局自作したやつ

画面下部の「アイコンのインポート」を押下するとPC上から画像の指定ができます。

「アイコンの作成」を押下すると下記のような画面が表示され、ここでも画像の指定、色の指定ができます。レイヤーが使えるのでこっちはどちらかというと透過pngなんかで背景色だけ変えたい場合に使う感じだと思います。

導入したIcon Packを使用する場合は画面上部プルダウンメニューから導入したIcon Packを選択すれば表示されるはずです。

ボタンの状態

こっちに戻りまして、ボタンの状態はそのボタンがオン、オフの状態によって見た目を変えられます。パレットマークは背景色で画像が透過の場合は背景色が表示されます。ゴミ箱マークは見ての通りアイコンを削除します。

うちではオフはこんな感じ
ラベル

ラベルはそのボタンに文字列を表示できます。ゴミ箱マークは見ての通り。(x)ボタンはMacroDeckが持ってる変数を表示できます。簡単なのだと日付とか時間とか。

Align labelはラベルの表示位置ですね。上にくっつけるか真ん中か下にくっつけるか。その下のプルダウンはフォントの指定、文字サイズ、文字カラーを指定できます。

右上矢印ボタンはこんなん表示されます。このアプリケーション、変数持ってて(自分で変数設定することもできる)色々制御できるっぽいけど、ここについてはまだ触ってないのでわかりません!!!

ボタンの状態とホットキー

ボタン設定画面左下。このへんは触ってないので正直よくわからん。多分変数の状態によってボタンの状態を固定するんだと思う。知らんけど。ホットキーはこのボタン事態にホットキーが設定できるんじゃないですかね。知らんけど。私の使い方だと本末転倒なんですよ。

ボタンのActions

ボタン設定画面右側。ここでボタンの細かい処理を設定します。
下記のようにタイミングによって細かく制御できます。

  • ボタンが押下された時
  • ボタンが押下解除された時
  • 長押し時
  • 長押し解除時
  • On event
    →変数が変わったタイミングでなんらかの処理したいときに使用

エリデンのホットキーを設定する場合は「On press」と「押下解除時」を使用しこんな感じにしてます。

「+」ボタンを押下するとこんなん出ます。
「アクション」は変数によるif文とかなしでそのままボタンの処理。
「状態」は処理の前に条件によって実施するとか、別処理するとかができる。
「Delay」はなんかの処理のあと何秒待つとかwait処理ができる。

今回はエリデンのアプリケーションにフォーカスしてるときだけ動作してほしいので、「状態」を選びました。

状態の設定

ifのところで「エリデンにフォーカスしてるとき」のように動作するときの条件が設定できます。focused_applicationはmacrodeckが元々持っている変数で、現在のフォーカスが当たっているアプリケーション名が格納されます。Equalsの後の値がよく白くなっちゃうのはご愛嬌。マウスフォーカスとかすれば出てくるはず。

focused_application等変数に格納されてる値はメイン画面の左側(x)のタブから確認できます。この画面のValueはリアルタイムで表示されるので確認したいアプリケーションのウィンドウとかクリックすれば値が変わると思います。下記はEDMarketConnectorを選択した例。

アクションの設定

ボタンの設定画面に戻りまして、Ifの下の「+」ボタンを押下すると処理を設定できます。

アクションを選択すると下記のような画面が表示されます。左側のからボタンの処理を選択します。

今回はボタンのオン/オフによってアイコンを差し替えたいので「このアクションボタン」から「ボタンの状態をオンに設定する」を選択しました

また本体のホットキー処理のためにWindows Utilsから「Hotkey」を選択しゲーム側で割り当てているキーを設定しています。下記は左Shiftと「1」の組み合わせの設定例です。プルダウン右の「?」リンクをクリックしても404で表示されませんが「VirtualKeyCode」で検索するとどの値がどのキーか確認できます
仮想キーコード (Winuser.h) - Win32 apps | Microsoft Learn

押下解除時の設定はこんな感じ。初期状態に戻すだけなのでこれでええやろ(適当

あとは右下の「OK」「保存」ボタンを押せばボタンの設定完了。
これを欲しいボタン分繰り返します。

設定例

 - hotkey割り当て

前の段落でやったので設定だけ

 - Voicmeeter切替

Voicemeeter Bananaという仮想ステレオミキサーを使用して音声出力デバイスを管理してるんですが、いちいちタスクトレイから出して、プルダウンからヘッドホンとスピーカーを切り替えて…というのがだるいのでワンタッチにしました。

Voicemeeterのプラグインが必要です。

その時の出力されているデバイスがピンク色になるようにしました。これも結局アイコン自作した。

Voicemeeter Bananaと変数の関係

Voicemeeterプラグインを導入するとbus0とかbus1とか変数がたくさん導入されるのですが、どの変数(というかどのデバイス)がどこに対応しているかは、Voicemeeter Bananaのマニュアルのマクロのページ(39ページ)を見ると記載があります。
Voicemeeter Banana User Manual
https://vb-audio.com/Voicemeeter/VoicemeeterBanana_UserManual.pdf

私はbus(0)(A1)にヘッドホン、bus(1)(A2)にスピーカーを割り当てて、それぞれのミュート状態をMacroDeckで制御することで切り替えています。Bus(x): Muteという変数を利用しています。

実際の設定

Macro Deck側の設定はこんな感じ。

バイスの状態でオン/オフしたいので押下解除時の処理は使っていません。

On eventでヘッドホンボタンが押され、変数の内容が変わったときにこちらもオンオフ状態を変える処理を入れています。


 - WEBサイト一括表示

エリデン用の情報webサイトをいつも手動でいちいち表示していたのでこれもワンタッチにしました。

chromeを指定し、argumentsに開きたいURLを並べればOK。新しいウィンドウで開きたいので「--new-window」も入れてます。

さいごに

ここまで読んでいただきありがとうございました。

最期になぜめんどくさい思いをしてまでこの記事を作成したかについて書かせていただくと、私自身が別のアプリケーションで困った時に誰かが書いた記事がやっぱり役に立ったからです。普段は他の人が既に書いているものが多い中、MacroDeckは日本語情報が見つからなかったため、今回記事を起こすまで至りました。そして願わくば誰かの役に立てばいいなと思います。

 

あと万一この記事でMacroDeckを知ったつよつよエンジニア有識者の方がいるのであれば、私が言いたいことは一つ。

プラグイン作って♡

StreamDeckと比べるとやはりプラグインの少なさが目立つのでプラグインが増えればもっと楽しいことができそうなんですよね。
えっお前がつくれ?よわよわなので…えっ起動スクリプト指定できるんだからスクリプトで解決?よわよわなんです。勘弁してください。