RocksmithとKarabiner-Elements
Mac用キー割り当てカスタマイズアプリ「Karabiner-Elements」が動いている macOS High Sierra で、UBIのゲーム「Rocksmith 2014」を動かすと、何かが干渉するのか、曲の検索やテクニックゲーム(GUITARCADE)でキーボード入力ができないので困ります。特にGUITARCADEはゲームを終了してメニューに戻ることができなくなるので辛いです。
Rocksmithを起動する前にKarabiner-Elementsを終了させておけば問題ないのですが、ついそれを忘れて起動して、「むむむ」ってなるのでカッとなって自動化してみました。
Hack the Rocksmith 2014 startup script
Rocksmith 2014をSteam経由でインストールしていると、どこかに(ユーザのアプリケーションフォルダですかね?)にロックスミスのアイコンになってるアプリケーションバンドル "Rocksmith 2014 Edition - Remastered.app" があると思います。
ターミナル経由でそのバンドルの中のシェルスクリプトをテキストエディタで開きます。
$ cd ~/Applications/
$ vi "Rocksmith 2014 Edition - Remastered.app/Contents/MacOS/run.sh"
すると
#!/bin/bash
# autogenerated file - do not edit
open steam://run/221680
みたいな感じになっているので、これを("do not edit"を無視して)
#!/bin/bash
# autogenerated file - do not edit
/bin/launchctl bootout gui/`id -u`/org.pqrs.karabiner.karabiner_console_user_server
/usr/bin/killall Karabiner-Menu
open steam://run/221680
sleep 10
RUN_CHECK="`dirname "$0"`/run-check.sh"
nohup "$RUN_CHECK" > /dev/null 2>&1 &
に修正して保存します。さらに、ゲーム終了のプロセス監視を行うスクリプト(run-check.sh
)をrun.sh
と同じディレクトリに作ります。
$ vi "Rocksmith 2014 Edition - Remastered.app/Contents/MacOS/run-check.sh"
$ chmod 755 "Rocksmith 2014 Edition - Remastered.app/Contents/MacOS/run-check.sh"
run-check.sh
の内容は、
#!/bin/bash
while true
do
alive=`pgrep Rocksmith2014 | wc -l`
if [ $alive = 0 ]; then
break
fi
sleep 5
done
open /Applications/Karabiner-Elements.app
です。
これで、Rocksmithで遊ぶときにこれをダブルクリックして起動するようにすれば(私はDockに入れていつでも遊べるようにしています)、Karabiner-Elementsが終了してからゲームが開始します。そしてゲームを遊び終わってデスクトップに戻ってきたら、Karabiner-Elementsが自動で起動します。
関連情報
- Karabiner-Elements blocking certain inputs in Rocksmith
- How can quit KE through hammerspoon or applescript or shell, please?
以上です。
追記: 2018-04-15
最近、macOSかSteamかどちらかが最新に更新されて以降、open steam://...
が正しく動作しなくなったようです。このため、シェルスクリプトからRocksmithを起動できなくなってしまいました。残念。