* get all axes as absolute and compensate for relative axes
* get all axes as absolute and compensate for relative axes. * * Unless, of course, all axes are relative like a mouse device, * in which case setting the DIDF_ABSAXIS flag will result in * incorrect axis values returned from GetDeviceData for some * obscure reason.
	public IDirectInputDevice(DummyWindow window, long address, byte[] instance_guid, byte[] product_guid, int dev_type, int dev_subtype, String instance_name, String product_name) throws IOException {		this.window = window;		this.address = address;		this.product_name = product_name;		this.instance_name = instance_name;		this.dev_type = dev_type;		this.dev_subtype = dev_subtype;		// Assume that the caller (native side) releases the device if setup fails		enumObjects();		try {			enumEffects();			createRumblers();		} catch (IOException e) {			ControllerEnvironment.logln("Failed to create rumblers: " + e.getMessage());		}		/* Some DirectInput lamer-designer made the device state		 * axis mode be per-device not per-axis, so I'll just		 * get all axes as absolute and compensate for relative axes		 */		setDataFormat(DIDF_ABSAXIS);		if (rumblers.size() > 0) {			try {				setCooperativeLevel(DISCL_BACKGROUND | DISCL_EXCLUSIVE);			} catch (IOException e) {				setCooperativeLevel(DISCL_BACKGROUND | DISCL_NONEXCLUSIVE);			}		} else			setCooperativeLevel(DISCL_BACKGROUND | DISCL_NONEXCLUSIVE);		setBufferSize(AbstractController.EVENT_QUEUE_DEPTH);		acquire();		this.device_state = new int[objects.size()];	}