mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-11-10 04:57:26 +01:00
internal/gamepad: bug fix: ignore a device that doesn't have an appropriate button
This commit is contained in:
parent
8522bfd0bf
commit
a659c330d2
@ -30,6 +30,16 @@ const (
|
|||||||
_ABS_CNT = _ABS_MAX + 1
|
_ABS_CNT = _ABS_MAX + 1
|
||||||
|
|
||||||
_BTN_MISC = 0x100
|
_BTN_MISC = 0x100
|
||||||
|
_BTN_0 = 0x100
|
||||||
|
_BTN_1 = 0x101
|
||||||
|
_BTN_2 = 0x102
|
||||||
|
_BTN_3 = 0x103
|
||||||
|
_BTN_4 = 0x104
|
||||||
|
_BTN_5 = 0x105
|
||||||
|
_BTN_6 = 0x106
|
||||||
|
_BTN_7 = 0x107
|
||||||
|
_BTN_8 = 0x108
|
||||||
|
_BTN_9 = 0x109
|
||||||
|
|
||||||
_IOC_NONE = 0
|
_IOC_NONE = 0
|
||||||
_IOC_WRITE = 1
|
_IOC_WRITE = 1
|
||||||
|
@ -181,13 +181,27 @@ func (*nativeGamepadsImpl) openGamepad(gamepads *gamepads, path string) (err err
|
|||||||
var axisCount int
|
var axisCount int
|
||||||
var buttonCount int
|
var buttonCount int
|
||||||
var hatCount int
|
var hatCount int
|
||||||
|
var necessaryButtonExist bool
|
||||||
for code := _BTN_MISC; code < _KEY_CNT; code++ {
|
for code := _BTN_MISC; code < _KEY_CNT; code++ {
|
||||||
if !isBitSet(keyBits, code) {
|
if !isBitSet(keyBits, code) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
n.keyMap[code-_BTN_MISC] = buttonCount
|
n.keyMap[code-_BTN_MISC] = buttonCount
|
||||||
|
if _BTN_0 <= code && code <= _BTN_9 {
|
||||||
|
necessaryButtonExist = true
|
||||||
|
}
|
||||||
buttonCount++
|
buttonCount++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the device doesn't have any necessary bottons, this might not be a gamepad (#2039).
|
||||||
|
// Remove this.
|
||||||
|
if !necessaryButtonExist {
|
||||||
|
n.close()
|
||||||
|
gamepads.remove(func(gamepad *Gamepad) bool {
|
||||||
|
return gamepad == gp
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
for code := 0; code < _ABS_CNT; code++ {
|
for code := 0; code < _ABS_CNT; code++ {
|
||||||
n.absMap[code] = -1
|
n.absMap[code] = -1
|
||||||
if !isBitSet(absBits, code) {
|
if !isBitSet(absBits, code) {
|
||||||
|
Loading…
Reference in New Issue
Block a user