MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / enum_controllers

Method enum_controllers

linux/lnxcontroller.cpp:853–939  ·  view source on GitHub ↗

enumerate all controllers on system

Source from the content-addressed store, hash-verified

851
852// enumerate all controllers on system
853bool lnxgameController::enum_controllers() {
854 int num_devs = 0, dev;
855 int i;
856
857 for (i = 0; i < CT_MAX_CONTROLLERS; i++)
858 m_ControlList[i].id = CTID_INVALID;
859
860 // Add keyboard controller
861 m_ControlList[num_devs].id = CTID_KEYBOARD;
862 m_ControlList[num_devs].buttons = 0;
863 m_ControlList[num_devs].flags = 0;
864 num_devs++;
865
866 // add mouse controller
867
868 int left, top, right, bottom, zmin, zmax; // btns, axes,
869 int nbtns, naxis, btnmask;
870 ddio_MouseGetLimits(&left, &top, &right, &bottom, &zmin, &zmax);
871 btnmask = ddio_MouseGetCaps(&nbtns, &naxis);
872
873 // we will try to support a mouse with 3 axis and N_MSEBTNS buttons.
874 m_ControlList[num_devs].id = CTID_MOUSE;
875 m_ControlList[num_devs].buttons = nbtns;
876 m_ControlList[num_devs].flags = CTF_X_AXIS | CTF_Y_AXIS; // | (naxis>=3 ? CTF_Z_AXIS : 0);
877 m_ControlList[num_devs].btnmask = btnmask;
878 m_ControlList[num_devs].normalizer[0] = 320.0f;
879 m_ControlList[num_devs].normalizer[1] = 240.0f;
880 m_ControlList[num_devs].normalizer[2] = 100.0f;
881 m_ControlList[num_devs].sens[0] = 1.0f;
882 m_ControlList[num_devs].sens[1] = 1.0f;
883 m_ControlList[num_devs].sens[2] = 1.0f;
884 m_ControlList[num_devs].sensmod[0] = 1.0f;
885 m_ControlList[num_devs].sensmod[1] = 1.0f;
886 m_ControlList[num_devs].sensmod[2] = 1.0f;
887 num_devs++;
888
889 // we should initialize multiple controls
890 // before doing this, MAKE SURE REMOTE CONTROL SUPPORTS IT.
891 for (dev = JOYSTICK_1; dev <= JOYSTICK_8; dev++) {
892 tJoyInfo jc;
893
894 // check if device is plugged in.
895 if (joy_IsValid(dev)) {
896 // query the joystick's capabilites to see if joystick is truly valid
897 joy_GetJoyInfo((tJoystick)dev, &jc);
898
899 m_ControlList[num_devs].id = dev;
900 m_ControlList[num_devs].buttons = jc.num_btns;
901 m_ControlList[num_devs].btnmask = 0;
902 m_ControlList[num_devs].flags =
903 CTF_X_AXIS | CTF_Y_AXIS | ((jc.axes_mask & JOYFLAG_ZVALID) ? CTF_Z_AXIS : 0) |
904 ((jc.axes_mask & JOYFLAG_RVALID) ? CTF_R_AXIS : 0) | ((jc.axes_mask & JOYFLAG_UVALID) ? CTF_U_AXIS : 0) |
905 ((jc.axes_mask & JOYFLAG_VVALID) ? CTF_V_AXIS : 0) | ((jc.axes_mask & JOYFLAG_POVVALID) ? CTF_POV : 0) |
906 ((jc.axes_mask & JOYFLAG_POV2VALID) ? CTF_POV2 : 0) | ((jc.axes_mask & JOYFLAG_POV3VALID) ? CTF_POV3 : 0) |
907 ((jc.axes_mask & JOYFLAG_POV4VALID) ? CTF_POV4 : 0);
908 m_ControlList[num_devs].normalizer[0] = (jc.maxx - jc.minx) / 2.0f;
909 m_ControlList[num_devs].normalizer[1] = (jc.maxy - jc.miny) / 2.0f;
910 m_ControlList[num_devs].normalizer[2] = (jc.maxz - jc.minz) / 2.0f;

Callers

nothing calls this directly

Calls 4

ddio_MouseGetLimitsFunction · 0.85
ddio_MouseGetCapsFunction · 0.85
joy_IsValidFunction · 0.85
joy_GetJoyInfoFunction · 0.85

Tested by

no test coverage detected