1010import libevdev
1111import pytest
1212
13- from .base_gamepad import BaseGamepad , JoystickGamepad
13+ from .base_gamepad import BaseGamepad , JoystickGamepad , AxisMapping
1414from hidtools .util import BusType
1515
1616import logging
@@ -609,6 +609,40 @@ def __init__(self, rdesc=report_descriptor, name=None):
609609 self .buttons = (1 , 2 , 4 , 5 , 7 , 8 , 14 , 15 , 13 )
610610
611611
612+ class RaptorMach2Joystick (JoystickGamepad ):
613+ axes_map = {
614+ "left_stick" : {
615+ "x" : AxisMapping ("x" ),
616+ "y" : AxisMapping ("y" ),
617+ },
618+ "right_stick" : {
619+ "x" : AxisMapping ("z" ),
620+ "y" : AxisMapping ("Rz" ),
621+ },
622+ }
623+
624+ def __init__ (
625+ self ,
626+ name ,
627+ rdesc = None ,
628+ application = "Joystick" ,
629+ input_info = (BusType .USB , 0x11C0 , 0x5606 ),
630+ ):
631+ super ().__init__ (rdesc , application , name , input_info )
632+ self .buttons = (1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 )
633+ self .hat_switch = 240 # null value is 240 as max is 239
634+
635+ def event (
636+ self , * , left = (None , None ), right = (None , None ), hat_switch = None , buttons = None
637+ ):
638+ if hat_switch is not None :
639+ hat_switch *= 30
640+
641+ return super ().event (
642+ left = left , right = right , hat_switch = hat_switch , buttons = buttons
643+ )
644+
645+
612646class TestSaitekGamepad (BaseTest .TestGamepad ):
613647 def create_device (self ):
614648 return SaitekGamepad ()
@@ -617,3 +651,14 @@ def create_device(self):
617651class TestAsusGamepad (BaseTest .TestGamepad ):
618652 def create_device (self ):
619653 return AsusGamepad ()
654+
655+
656+ class TestRaptorMach2Joystick (BaseTest .TestGamepad ):
657+ hid_bpfs = [("FR-TEC__Raptor-Mach-2.bpf.o" , True )]
658+
659+ def create_device (self ):
660+ return RaptorMach2Joystick (
661+ "uhid test Sanmos Group FR-TEC Raptor MACH 2" ,
662+ rdesc = "05 01 09 04 a1 01 05 01 85 01 05 01 09 30 75 10 95 01 15 00 26 ff 07 46 ff 07 81 02 05 01 09 31 75 10 95 01 15 00 26 ff 07 46 ff 07 81 02 05 01 09 33 75 10 95 01 15 00 26 ff 03 46 ff 03 81 02 05 00 09 00 75 10 95 01 15 00 26 ff 03 46 ff 03 81 02 05 01 09 32 75 10 95 01 15 00 26 ff 03 46 ff 03 81 02 05 01 09 35 75 10 95 01 15 00 26 ff 03 46 ff 03 81 02 05 01 09 34 75 10 95 01 15 00 26 ff 07 46 ff 07 81 02 05 01 09 36 75 10 95 01 15 00 26 ff 03 46 ff 03 81 02 05 09 19 01 2a 1d 00 15 00 25 01 75 01 96 80 00 81 02 05 01 09 39 26 ef 00 46 68 01 65 14 75 10 95 01 81 42 05 01 09 00 75 08 95 1d 81 01 15 00 26 ef 00 85 58 26 ff 00 46 ff 00 75 08 95 3f 09 00 91 02 85 59 75 08 95 80 09 00 b1 02 c0" ,
663+ input_info = (BusType .USB , 0x11C0 , 0x5606 ),
664+ )
0 commit comments