joyconlib
SDLでの利用について

電算室のLinux PCにはジョイコンを直接ジョイスティックとして認識するドライバがインストールされています。
このため,SDLのイベント処理でジョイスティックとして扱うことができますが,以下にプログラミングにおける注意点を記載します。

ジョイスティックの識別

ジョイコンをPCにBluetooth接続すると,次の二つのジョイスティックが認識されます。

  1. Nintendo Switch Right Joy-Con
  2. Nintendo Switch Right Joy-Con IMU

1は11個のボタンと2軸のアナログスティックを持つジョイスティックとして, 2はジョイコンの6軸センサーを6軸のアナログスティックに割り当てたジョイスティックとして, それぞれ認識されます。

SDLでジョイスティックとして利用する際は,1のみオープンすればいいですが,必ず1,2の順に接続されるわけではない ので,ジョイスティックの名前を確認するようにしてください。

イベントの量

6軸センサーも利用したい場合は,上記2もオープンする必要がありますが,2をオープンすると大量のイベントが発生します。

このため,イベントを一つ取り出すごとに描画するような書き方だとイベントを捌ききれずに動作が遅くなります。

while(1){
// メインループ
if(SDL_PollEvent(&e)){
// イベント処理
}
// 描画処理
}

溜まったイベントをすべて取り出してから描画するような記述が必要です。

while(1){
// メインループ
while(SDL_PollEvent(&e)){
// イベント処理
}
// 描画処理
}

ジョイコン独自機能

IRカメラなど,ジョイコンの独自機能はSDLの関数からは利用できません。joyconlib を使ってください。