new_contents: from hidparser.UsagePage import UsagePage, UsageType, Usage
  
  
  class Digitizers(UsagePage):
  
      @classmethod
      def _get_usage_page_index(cls):
          return 0x0D
  
      DIGITIZER = Usage(0x01,UsageType.COLLECTION_APPLICATION)
      PEN = Usage(0x02,UsageType.COLLECTION_APPLICATION)
      LIGHT_PEN = Usage(0x03,UsageType.COLLECTION_APPLICATION)
      TOUCH_SCREEN = Usage(0x04,UsageType.COLLECTION_APPLICATION)
      TOUCH_PAD = Usage(0x05,UsageType.COLLECTION_APPLICATION)
      WHITE_BOARD = Usage(0x06,UsageType.COLLECTION_APPLICATION)
      COORDINATE_MEASURING_MACHINE = Usage(0x07,UsageType.COLLECTION_APPLICATION)
      DIGITIZER_3D = Usage(0x08,UsageType.COLLECTION_APPLICATION)
      STEREO_PLOTTER = Usage(0x09,UsageType.COLLECTION_APPLICATION)
      ARTICULATED_ARM = Usage(0x0A,UsageType.COLLECTION_APPLICATION)
      ARMATURE = Usage(0x0B,UsageType.COLLECTION_APPLICATION)
      MULTIPLE_POINT_DIGITIZER = Usage(0x0C,UsageType.COLLECTION_APPLICATION)
      FREE_SPACE_WAND = Usage(0x0D,UsageType.COLLECTION_APPLICATION)
  
      STYLUS = Usage(0x20,UsageType.COLLECTION_LOGICAL)
      PUCK = Usage(0x21,UsageType.COLLECTION_LOGICAL)
      FINGER = Usage(0x22,UsageType.COLLECTION_LOGICAL)
  
      TIP_PRESSURE = Usage(0x30,UsageType.DATA_DYNAMIC_VALUE)
      BARREL_PRESSURE = Usage(0x31,UsageType.DATA_DYNAMIC_VALUE)
      IN_RANGE = Usage(0x32,UsageType.CONTROL_MOMENTARY)
      TOUCH = Usage(0x33,UsageType.CONTROL_MOMENTARY)
      UNTOUCH = Usage(0x34,UsageType.CONTROL_ONE_SHOT)
      TAP = Usage(0x35,UsageType.CONTROL_ONE_SHOT)
      QUALITY = Usage(0x36,UsageType.DATA_DYNAMIC_VALUE)
      DATA_VALID = Usage(0x37,UsageType.CONTROL_MOMENTARY)
      TRANSDUCER_INDEX = Usage(0x38,UsageType.DATA_DYNAMIC_VALUE)
      TABLET_FUNCTION_KEYS = Usage(0x39,UsageType.COLLECTION_LOGICAL)
      PROGRAM_CHANGE_KEYS = Usage(0x3A,UsageType.COLLECTION_LOGICAL)
      BATTERY_STRENGTH = Usage(0x3B,UsageType.DATA_DYNAMIC_VALUE)
      INVERT = Usage(0x3C,UsageType.CONTROL_MOMENTARY)
      X_TILT = Usage(0x3D,UsageType.DATA_DYNAMIC_VALUE)
      Y_TILT = Usage(0x3E,UsageType.DATA_DYNAMIC_VALUE)
      AZIMUTH = Usage(0x3F,UsageType.DATA_DYNAMIC_VALUE)
      ALTITUDE = Usage(0x40,UsageType.DATA_DYNAMIC_VALUE)
      TWIST = Usage(0x41,UsageType.DATA_DYNAMIC_VALUE)
      TIP_SWITCH = Usage(0x42,UsageType.CONTROL_MOMENTARY)
      SECONDARY_TIP_SWITCH = Usage(0x43,UsageType.CONTROL_MOMENTARY)
      BARREL_SWITCH = Usage(0x44,UsageType.CONTROL_MOMENTARY)
      ERASER = Usage(0x45,UsageType.CONTROL_MOMENTARY)
      TABLET_PICK = Usage(0x46,UsageType.CONTROL_MOMENTARY)
  
      # HID USage Table Request 30: Addition of usages related to touch digitizers
      TOUCH_VALID = Usage(0x47, UsageType.CONTROL_MOMENTARY)
      WIDTH = Usage(0x48, UsageType.DATA_DYNAMIC_VALUE)
      HEIGHT = Usage(0x49, UsageType.DATA_DYNAMIC_VALUE)
  
      # HID USage Table Request 34: Addition of usages related to multi-touch digitizers
      CONTACT_IDENTIFIER = Usage(0x51, UsageType.DATA_DYNAMIC_VALUE)
      DEVICE_CONFIGURATION = Usage(0x0E, UsageType.COLLECTION_APPLICATION)
      DEVICE_MODE = Usage(0x52, UsageType.DATA_DYNAMIC_VALUE)
      DEVICE_IDENTIFIER = Usage(0x53, UsageType.DATA_DYNAMIC_VALUE)
      CONTACT_COUNT = Usage(0x54, UsageType.DATA_DYNAMIC_VALUE)
      CONTACT_COUNT_MAXIMUM = Usage(0x55, UsageType.DATA_STATIC_VALUE)
      DEVICE_SETTINGS = Usage(0x23, UsageType.COLLECTION_LOGICAL)
  
subject: Add HID Usage Table Digitizers (0x0D) with aditional Requests (30,34) #2