From 732d359c182794df20e78b4e00db4c5bf123dfec Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 8 Dec 2006 06:33:26 +0000 Subject: - laid out new event labeling scheme based more on USB HID rather than Linux input.h. It works on my devices on my Mac OS X. I probably broke Linux support. The scheme is in a new file, hidio_types.c - all event symbols except the vendor-defined usage are generated in hidio_setup(). The symbols for vendor-defined usages are generated when the device's element list is built. - changed macros to work cleanly when compiled on Windows using MinGW gcc - fixed up help file to better represent the state of things (still could be much better) svn path=/trunk/externals/io/hidio/; revision=6718 --- hidio_types.c | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 hidio_types.c (limited to 'hidio_types.c') diff --git a/hidio_types.c b/hidio_types.c new file mode 100644 index 0000000..43c0708 --- /dev/null +++ b/hidio_types.c @@ -0,0 +1,163 @@ + +#include "m_pd.h" +#include "hidio.h" + +//#define DEBUG(x) +#define DEBUG(x) x + + +/*============================================================================== + * "codes" for elements + *============================================================================== + */ + +/* absolute axes (joysticks, gamepads, tablets, etc.) */ +static char *absolute_strings[ABSOLUTE_ARRAY_MAX] = { + "x","y","z","rx","ry","rz","slider","dial", + "wheel","hatswitch","absolute_10","absolute_11","absolute_12","absolute_13", + "absolute_14","absolute_15" +}; + +/* keys (keyboards, keypads) */ +static char *key_strings[KEY_ARRAY_MAX] = { + "key_0","errorrollover","postfail","errorundefined","a_key","b_key","c_key","d_key","e_key","f_key","g_key","h_key","i_key","j_key","k_key","l_key","m_key","n_key","o_key","p_key","q_key","r_key","s_key","t_key","u_key","v_key","w_key","x_key","y_key","z_key","1_key","2_key","3_key","4_key","5_key","6_key","7_key","8_key","9_key","0_key","enter","escape","deleteorbackspace","tab","spacebar","hyphen","equalsign","openbracket","closebracket","backslash","nonuspound","semicolon","quote","graveaccentandtilde","comma","period","slash","capslock","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","printscreen","scrolllock","pause","insert","home","pageup","deleteforward","end","pagedown","rightarrow","leftarrow","downarrow","uparrow","keypad_numlock","keypad_slash","keypad_asterisk","keypad_hyphen","keypad_plus","keypad_enter","keypad_1","keypad_2","keypad_3","keypad_4","keypad_5","keypad_6","keypad_7","keypad_8","keypad_9","keypad_0","keypad_period","nonusbackslash","application","power","keypad_equalsign","f13","f14","f15","f16","f17","f18","f19","f20","f21","f22","f23","f24","execute","help","menu","select","stop","again","undo","cut","copy","paste","find","mute","volumeup","volumedown","lockingcapslock","lockingnumlock","lockingscrolllock","keypad_comma","keypad_equalsignas400","international1","international2","international3","international4","international5","international6","international7","international8","international9","lang1","lang2","lang3","lang4","lang5","lang6","lang7","lang8","lang9","alternateerase","sysreqorattention","cancel","clear","prior","return","separator","out","oper","clearoragain","crselorprops","exsel","key_165","key_166","key_167","key_168","key_169","key_170","key_171","key_172","key_173","key_174","key_175","key_176","key_177","key_178","key_179","key_180","key_181","key_182","key_183","key_184","key_185","key_186","key_187","key_188","key_189","key_190","key_191","key_192","key_193","key_194","key_195","key_196","key_197","key_198","key_199","key_200","key_201","key_202","key_203","key_204","key_205","key_206","key_207","key_208","key_209","key_210","key_211","key_212","key_213","key_214","key_215","key_216","key_217","key_218","key_219","key_220","key_221","key_222","key_223","leftcontrol","leftshift","leftalt","leftgui","rightcontrol","rightshift","rightalt","rightgui","key_232","key_233","key_234","key_235","key_236","key_237","key_238","key_239","key_240","key_241","key_242","key_243","key_244","key_245","key_246","key_247","key_248","key_249","key_250","key_251","key_252","key_253","key_254","key_255" + +}; + + +/* LEDs (keyboards, gamepads, etc.) */ +static char *led_strings[LED_ARRAY_MAX] = { + "numlock","capslock","scrolllock","compose","kana","power","shift", + "donotdisturb","mute","toneenable","highcutfilter","lowcutfilter", + "equalizerenable","soundfieldon","surroundon","repeat","stereo", + "samplingratedetect","spinning","cav","clv","recordingformatdetect", + "offhook","ring","messagewaiting","datamode","batteryoperation","batteryok", + "batterylow","speaker","headset","hold","microphone","coverage","nightmode", + "sendcalls","callpickup","conference","standby","cameraon","cameraoff", + "online","offline","busy","ready","paperout","paperjam","remote","forward", + "reverse","stop","rewind","fastforward","play","pause","record","error", + "usage","usageinuseindicator","usagemultimodeindicator","indicatoron", + "indicatorflash","indicatorslowblink","indicatorfastblink","indicatoroff", + "flashontime","slowblinkontime","slowblinkofftime","fastblinkontime", + "fastblinkofftime","usageindicatorcolor","indicatorred","indicatorgreen", + "indicatoramber","genericindicator","systemsuspend","externalpowerconnected" +}; + + +/* PID, Physical Interface Devices (force feedback joysticks, mice, etc.) */ +static char *pid_strings[PID_ARRAY_MAX] = { + "pid_0","physicalinterfacedevice","pid_2","pid_3","pid_4","pid_5","pid_6","pid_7", + "pid_8","pid_9","pid_10","pid_11","pid_12","pid_13","pid_14","pid_15", + "pid_16","pid_17","pid_18","pid_19","pid_20","pid_21","pid_22","pid_23", + "pid_24","pid_25","pid_26","pid_27","pid_28","pid_29","pid_30","pid_31", + "normal","seteffectreport","effectblockindex","paramblockoffset","rom_flag", + "effecttype","constantforce","ramp","customforcedata","pid_41","pid_42", + "pid_43","pid_44","pid_45","pid_46","pid_47","square","sine","triangle", + "sawtoothup","sawtoothdown","pid_53","pid_54","pid_55","pid_56","pid_57", + "pid_58","pid_59","pid_60","pid_61","pid_62","pid_63","spring","damper", + "inertia","friction","pid_68","pid_69","pid_70","pid_71","pid_72","pid_73", + "pid_74","pid_75","pid_76","pid_77","pid_78","pid_79","duration", + "sampleperiod","gain","triggerbutton","triggerrepeatinterval","axesenable", + "directionenable","direction","typespecificblockoffset","blocktype", + "setenvelopereport","attacklevel","attacktime","fadelevel","fadetime", + "setconditionreport","cp_offset","positivecoefficient", + "negativecoefficient","positivesaturation","negativesaturation","deadband", + "downloadforcesample","isochcustomforceenable","customforcedatareport", + "customforcedata","customforcevendordefineddata","setcustomforcereport", + "customforcedataoffset","samplecount","setperiodicreport","offset", + "magnitude","phase","period","setconstantforcereport","setrampforcereport", + "rampstart","rampend","effectoperationreport","effectoperation", + "opeffectstart","opeffectstartsolo","opeffectstop","loopcount", + "devicegainreport","devicegain","poolreport","ram_poolsize", + "rom_poolsize","rom_effectblockcount","simultaneouseffectsmax", + "poolalignment","poolmovereport","movesource","movedestination", + "movelength","blockloadreport","pid_138","blockloadstatus", + "blockloadsuccess","blockloadfull","blockloaderror","blockhandle", + "blockfreereport","typespecificblockhandle","statereport","pid_147", + "effectplaying","devicecontrolreport","devicecontrol","dc_enableactuators", + "dc_disableactuators","dc_stopalleffects","dc_devicereset","dc_devicepause", + "dc_devicecontinue","pid_157","pid_158","devicepaused","actuatorsenabled", + "pid_161","pid_162","pid_163","safetyswitch","actuatoroverrideswitch", + "actuatorpower","startdelay","parameterblocksize","devicemanagedpool", + "sharedparameterblocks","createneweffectreport","ram_poolavailable", + "pid_173","pid_174","pid_175","pid_176","pid_177","pid_178","pid_179", + "pid_180","pid_181","pid_182","pid_183","pid_184","pid_185","pid_186", + "pid_187","pid_188","pid_189","pid_190","pid_191","pid_192","pid_193", + "pid_194","pid_195","pid_196","pid_197","pid_198","pid_199","pid_200", + "pid_201","pid_202","pid_203","pid_204","pid_205","pid_206","pid_207", + "pid_208","pid_209","pid_210","pid_211","pid_212","pid_213","pid_214", + "pid_215","pid_216","pid_217","pid_218","pid_219","pid_220","pid_221", + "pid_222","pid_223","pid_224","pid_225","pid_226","pid_227","pid_228", + "pid_229","pid_230","pid_231","pid_232","pid_233","pid_234","pid_235", + "pid_236","pid_237","pid_238","pid_239","pid_240","pid_241","pid_242", + "pid_243","pid_244","pid_245","pid_246","pid_247","pid_248","pid_249", + "pid_250","pid_251","pid_252","pid_253","pid_254","pid_255" +}; + + +/* relative axes (mice) */ +static char *relative_strings[RELATIVE_ARRAY_MAX] = { + "x","y","z","rx","ry","rz", + "hwheel","dial","wheel","misc","relative_10","relative_11", + "relative_12","relative_13","relative_14","relative_15" +}; + + +/*============================================================================== + * conversion functions + *============================================================================== + */ + +static void generate_button_symbols(t_symbol *symbols[], unsigned int size) +{ + unsigned int i; + char string_buffer[MAXPDSTRING]; + + for(i = 0; i < size; ++i) + { + sprintf(string_buffer,"button_%d",i); + symbols[i] = gensym(string_buffer); + } +} + +static void generate_symbols_from_strings(t_symbol *symbols[], char *strings[], + unsigned int size) +{ + unsigned int i; + + for(i = 0; i < size; ++i) symbols[i] = gensym(strings[i]); +} + + +void generate_event_symbols() +{ + DEBUG(post("generate_event_symbols");); + generate_button_symbols(button_symbols, BUTTON_ARRAY_MAX); + DEBUG(post("button");); + generate_symbols_from_strings(absolute_symbols, absolute_strings, + ABSOLUTE_ARRAY_MAX); + DEBUG(post("absolute");); + generate_symbols_from_strings(key_symbols, key_strings, + KEY_ARRAY_MAX); + DEBUG(post("key");); + generate_symbols_from_strings(led_symbols, led_strings, + LED_ARRAY_MAX); + DEBUG(post("led");); + generate_symbols_from_strings(pid_symbols, pid_strings, + PID_ARRAY_MAX); + DEBUG(post("pid");); + generate_symbols_from_strings(relative_symbols, relative_strings, + RELATIVE_ARRAY_MAX); + DEBUG(post("relative %s",relative_symbols[4]->s_name);); + DEBUG(post("generate_event_symbols");); +} + +void generate_type_symbols() +{ + ps_absolute = gensym("absolute"); + ps_button = gensym("button"); + ps_key = gensym("key"); + ps_led = gensym("led"); + ps_pid = gensym("pid"); + ps_relative = gensym("relative"); +} -- cgit v1.2.1