Android版のAnkiであるAnkiDroidでは、ゲーム用のコントローラ(GamePad)を繋いでカードをめくることができます。
Ankiでは回答の選択肢が4つありますが、どのコントローラ上のボタンを押したらどの回答が選択されたことになるのでしょうか?
ゲーム用のコントローラと、回答選択肢の割当て
このときのコントローラとボタンの難易度の対応ですが、下記の通りになっています。(iOS版はアプリを持っていないので不明です)
- ゲームパッドのY: 左から1番目のボタン(もう一度)
- ゲームパッドのY: 左から2番目のボタン(難しい)
- ゲームパッドのB: 左から3番目のボタン(普通)
- ゲームパッドのA: 左から4番目のボタン(簡単)
新規のカードでボタンが"赤、緑、青"の三つになっている場合は、Y, Z, B
がそれぞれのボタンに対応します。
物理ボタンと認識されたボタンを確認する
使用しているゲームパッドによっては、物理的な刻印上のA,B,X,Yと機能上の役割を変更できる(A,BおよびX,Yをそれぞれ逆にできる)機能を持っている場合があるので注意してください。
物理的なボタンとAndroidOS上での認識の対応は、Button Mapperと言うアプリで確認できました。
アプリ内の"ボタンを追加"というメニューで、以下のように"どのボタンが押されたらAndroid側のボタンが押されたと見なされているか"をダイアログで表示してくれます。
プログラム上の実装
念のためにAnkiDroidアプリのソースコードも確認してみましたがゲームパッドの割当ては、以下のようになっていました。こちらからもY,X,B,Aのボタンが、それぞれ画面上の1,2,3,4番目の選択肢に紐づいていることがわかります。
コントローラによってはL,RやSelect,Startボタンがある場合もありますが、これらのボタンは何の機能にも割り当たっていませんでした。
// AnkiDroid/src/main/java/com/ichi2/anki/reviewer/PeripheralCommand.java
ret.add(PeripheralCommand.keyCode(KeyEvent.KEYCODE_BUTTON_Y, COMMAND_FLIP_OR_ANSWER_EASE1, CardSide.BOTH));
ret.add(PeripheralCommand.keyCode(KeyEvent.KEYCODE_BUTTON_X, COMMAND_FLIP_OR_ANSWER_EASE2, CardSide.BOTH));
ret.add(PeripheralCommand.keyCode(KeyEvent.KEYCODE_BUTTON_B, COMMAND_FLIP_OR_ANSWER_EASE3, CardSide.BOTH));
ret.add(PeripheralCommand.keyCode(KeyEvent.KEYCODE_BUTTON_A, COMMAND_FLIP_OR_ANSWER_EASE4, CardSide.BOTH));
こちらもおススメ