============================================================================== = test verbose names - matju says symbols are compared by pointer, so they are fast - try verbose names like: syn = sync snd = sound msc = misc rep = repeat pwr = power - maybe these too abs = absolute rel = relative btn = button - maybe make the type the full name, with the code using the abbreviation - change generic ev_9 to type_9 - change word "code" to "element" ============================================================================== = make fake names in input_arrays.c Instead of having "NULL" names, make up names using the event type, and the code number, i.e. abs_41, rel_15 ============================================================================== = check out GDAM HID implementation - GDAM has a HID Manager implementation and probably a Linux one too ============================================================================== = profile [hid] object and usage - find out how much more CPU the names (btn_?, abs, rel, etc) use over using just floats. ============================================================================== = device selection by # (1,2,...), generic name (mouse1, joystick2, tablet3...), or device name ("Trackpad", "Microsoft 5-button Mouse with IntelliEye(TM)", etc.) ============================================================================== = Report available FF effects - check against HID Utilities Source/PID.h ============================================================================== = figure out how to store device ID in obj struct (in SC_HID.c its locID and cookie) - it should probably just store the Pd arguments - this will have to be dealt with when the "mouse0", "joystick2" arguments are implemented ============================================================================== = pollfn for mouse-like devices - determine whether using a pollfn is actually better than using a t_clock - any device that acts like a system mouse can be used with a pollfn, since the mouse data will go thru Pd's network port, triggering the pollfn. - this is probably unnecessary since the t_clock seems to run well at 1ms delay - at standard block size (64 samples), one block = ~1.5ms ============================================================================== = function return values - most functions probably do not need return values - return (1) seems to be the default on many functions ============================================================================== = control input messages - are [poll(, [start(, and [stop( needed? is 0/1/del# enough? ============================================================================== = consistent console output void hid_post(const char *format, const char *); ============================================================================== = event name changes - make key/button Type btn rather than key (undecided on this one) ============================================================================== = make [linuxhid] [darwinhid] and [windowshid] - so much info is lost in the translation to a common event scheme that it would be quite handy to have platform-specific objects. This would give access to the entire range of devices supported by HID Manager, Linux input events, etc. - these objects should follow the same conventions as [hid] ============================================================================== = device 0 gets events for all available devices - it might be useful to have device #0 open all available devices and output the events. ============================================================================== = figure out whole degree issue - should degree conversion also change rotation direction and 0 point? The degrees on a compass rotate the opposite direction of radians. The 0 point of a compass is due north, with radians, its right/due east. - [hid_polar] should take an argument (in degrees?) which specifies where the 0 is on the circle ============================================================================== = mapping object ideas [hid2midi] [midi2hid] midi value + bend <-> hid - use MIDI pitch and bend data for values in between MIDI notes? object for Fletcher-Munson Equal-loudness contours median average object [infinitepot] for use with a [knob] or any single axis that could be infinite. [hid_debounce] peak finder object "kalman filters" Curves!! http://www.2dcurves.com /++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BUGS BUGS BUGS BUGS BUGS BUGS BUGS BUGS BUGS BUGS BUGS BUGS BUGS BUGS BUGS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/ ______________________________________________________________________________ - BUG: multiple instances pointing to the same device don't have seperate close/free - closing the device on one instance closing that same device on all other instances of [hid] - deleting that instance also closes the device for all other instances pointing to that same device ______________________________________________________________________________ - BUG: on MacOS X, mouse axis data is limited by the screen dimensions - the axes data stops outputting when the mouse pointer reaches the edge of the screen. Hopefully the HID Manager API will allow raw mouse data access. It must since its used with games. ______________________________________________________________________________ - BUG: getting events from the queue doesn't output a 0 value event when the motion stops, so when the mouse stops, the sound keeps playing. This is probably only a problem on relative axes. This will probably have to be implemented on a platform-specific level: - On Darwin/MacOSX, I think that the HIDGetEvent() loop will have to be followed by one call to HIDGetElementValue() ______________________________________________________________________________ - BUG: hatswitches on MacOS X output an event without a change in value Because of the currnently implementation of the conversion of the MacOS X style event to the Linux style event, an event with a value of zero is output on the unchanged axis when the hatswitch is moved in along the X or Y axis (as opposed to diagonally). ______________________________________________________________________________ - BUG: on MacOS X, two keyboard key codes are reported as hatswitches abs abs_hat0x Button Input, Keyboard Usage 0x39 abs abs_hat0y Button Input, Keyboard Usage 0x39 I am pretty sure this is just a hid_print_element_list() display problem.