def set_active_context(self): '''Store information for the currently active context. This method is called automatically for the default context. ''' self.have_context = True if not self._have_info: self.vendor = asstr(cast(glGetString(GL_VENDOR), c_char_p).value) self.renderer = asstr(cast(glGetString(GL_RENDERER), c_char_p).value) self.extensions = asstr(cast(glGetString(GL_EXTENSIONS), c_char_p).value) if self.extensions: self.extensions = set(self.extensions.split()) self.version = asstr(cast(glGetString(GL_VERSION), c_char_p).value) self._have_info = True
def __init__(self, display, device_info): super(XInputDevice, self).__init__(display, asstr(device_info.name)) self._device_id = device_info.id self._device = None # Read device info self.buttons = [] self.keys = [] self.axes = [] ptr = device_info.inputclassinfo for i in range(device_info.num_classes): cp = ctypes.cast(ptr, ctypes.POINTER(xi.XAnyClassInfo)) cls_class = getattr(cp.contents, 'class') if cls_class == xi.KeyClass: cp = ctypes.cast(ptr, ctypes.POINTER(xi.XKeyInfo)) self.min_keycode = cp.contents.min_keycode num_keys = cp.contents.num_keys for i in range(num_keys): self.keys.append(Button('key%d' % i)) elif cls_class == xi.ButtonClass: cp = ctypes.cast(ptr, ctypes.POINTER(xi.XButtonInfo)) num_buttons = cp.contents.num_buttons for i in range(num_buttons): self.buttons.append(Button('button%d' % i)) elif cls_class == xi.ValuatorClass: cp = ctypes.cast(ptr, ctypes.POINTER(xi.XValuatorInfo)) num_axes = cp.contents.num_axes mode = cp.contents.mode axes = ctypes.cast(cp.contents.axes, ctypes.POINTER(xi.XAxisInfo)) for i in range(num_axes): axis = axes[i] if mode == xi.Absolute: self.axes.append( AbsoluteAxis('axis%d' % i, min=axis.min_value, max=axis.max_value)) elif mode == xi.Relative: self.axes.append(RelativeAxis('axis%d' % i)) cls = cp.contents ptr = ptr_add(ptr, cls.length) self.controls = self.buttons + self.keys + self.axes # Can't detect proximity class event without opening device. Just # assume there is the possibility of a control if there are any axes. if self.axes: self.proximity_control = Button('proximity') self.controls.append(self.proximity_control) else: self.proximity_control = None
def __init__(self, display, device_info): super(XInputDevice, self).__init__(display, asstr(device_info.name)) self._device_id = device_info.id self._device = None # Read device info self.buttons = [] self.keys = [] self.axes = [] ptr = device_info.inputclassinfo for i in range(device_info.num_classes): cp = ctypes.cast(ptr, ctypes.POINTER(xi.XAnyClassInfo)) cls_class = getattr(cp.contents, 'class') if cls_class == xi.KeyClass: cp = ctypes.cast(ptr, ctypes.POINTER(xi.XKeyInfo)) self.min_keycode = cp.contents.min_keycode num_keys = cp.contents.num_keys for i in range(num_keys): self.keys.append(Button('key%d' % i)) elif cls_class == xi.ButtonClass: cp = ctypes.cast(ptr, ctypes.POINTER(xi.XButtonInfo)) num_buttons = cp.contents.num_buttons for i in range(num_buttons): self.buttons.append(Button('button%d' % i)) elif cls_class == xi.ValuatorClass: cp = ctypes.cast(ptr, ctypes.POINTER(xi.XValuatorInfo)) num_axes = cp.contents.num_axes mode = cp.contents.mode axes = ctypes.cast(cp.contents.axes, ctypes.POINTER(xi.XAxisInfo)) for i in range(num_axes): axis = axes[i] if mode == xi.Absolute: self.axes.append(AbsoluteAxis('axis%d' % i, min=axis.min_value, max=axis.max_value)) elif mode == xi.Relative: self.axes.append(RelativeAxis('axis%d' % i)) cls = cp.contents ptr = ptr_add(ptr, cls.length) self.controls = self.buttons + self.keys + self.axes # Can't detect proximity class event without opening device. Just # assume there is the possibility of a control if there are any axes. if self.axes: self.proximity_control = Button('proximity') self.controls.append(self.proximity_control) else: self.proximity_control = None
def get_client_extensions(self): self.check_display() return asstr(glXGetClientString(self.display, GLX_EXTENSIONS)).split()
def get_client_version(self): self.check_display() return asstr(glXGetClientString(self.display, GLX_VERSION))
def get_client_vendor(self): self.check_display() return asstr(glXGetClientString(self.display, GLX_VENDOR))