struct input_data *Sys_Input_Init() { struct input_data *input; input = (struct input_data*)malloc(sizeof(struct input_data)); if (input) { memset(input, 0, sizeof(struct input_data)); input->ignore_mouse = 1; input->key_repeat_initial_delay = 500000; input->key_repeat_delay = 100000; NXEventHandle handle = NXOpenEventStatus(); if (handle) { input->key_repeat_initial_delay = NXKeyRepeatThreshold(handle) * 1000000; input->key_repeat_delay = NXKeyRepeatInterval(handle) * 1000000; NXCloseEventStatus(handle); } if (pthread_mutex_init(&input->mouse_mutex, 0) == 0) { if (pthread_mutex_init(&input->key_mutex, 0) == 0) { if (pthread_mutex_init(&input->thread_mutex, 0) == 0) { if (pthread_cond_init(&input->thread_has_spawned, 0) == 0) { pthread_mutex_lock(&input->thread_mutex); if (pthread_create(&input->thread, 0, Sys_Input_Thread, input) == 0) { pthread_cond_wait(&input->thread_has_spawned, &input->thread_mutex); pthread_mutex_unlock(&input->thread_mutex); return input; } pthread_mutex_unlock(&input->thread_mutex); pthread_cond_destroy(&input->thread_has_spawned); } pthread_mutex_destroy(&input->thread_mutex); } pthread_mutex_destroy(&input->key_mutex); } pthread_mutex_destroy(&input->mouse_mutex); } free(input); } return NULL; }
int main(int argc, char **argv) { NXEventHandle hdl; NXEventSystemDevice info[ 20 ]; unsigned int size; double dbl1, dbl2; int i, j; NXKeyMapping mapping; int mapSize; char * map; unsigned int * pmap; NXMouseScaling scaling; hdl = NXOpenEventStatus(); assert( hdl ); size = sizeof( info) / sizeof( int); assert( NXEventSystemInfo(hdl, NX_EVS_DEVICE_INFO, info, &size )); size = size * sizeof( int) / sizeof( info[0]); printf("%d devices\n", size); for( i = 0; i < size; i++) { printf("%d : dev_type = %d, interface = %d, " "id = %d, interface_addr = %d\n", i, info[ i ].dev_type, info[ i ].interface, info[ i ].id, info[ i ].interface_addr ); } dbl1 = NXKeyRepeatInterval(hdl); printf("NXKeyRepeatInterval = %f\n", dbl1); NXSetKeyRepeatInterval( hdl, 1.0 / 4 ); dbl2 = NXKeyRepeatInterval(hdl); printf("now NXKeyRepeatInterval = %f\n", dbl2); dbl1 = NXKeyRepeatThreshold(hdl); printf("NXKeyRepeatThreshold = %f\n", dbl1); NXSetKeyRepeatThreshold( hdl, 1.0 ); dbl2 = NXKeyRepeatThreshold(hdl); printf("now NXKeyRepeatThreshold = %f\n", dbl2); assert( KERN_SUCCESS == IOHIDGetMouseAcceleration(hdl, &dbl1)); printf("IOHIDGetMouseAcceleration = %f\n", dbl1); assert( KERN_SUCCESS == IOHIDSetMouseAcceleration(hdl, 1.0)); assert( KERN_SUCCESS == IOHIDGetMouseAcceleration(hdl, &dbl1)); printf("now IOHIDGetMouseAcceleration = %f\n", dbl1); NXGetMouseScaling(hdl, &scaling); printf("Scaling[ %d ]: ", scaling.numScaleLevels); for( i = 0; i < scaling.numScaleLevels; i++) printf("(%d,%d), ", scaling.scaleThresholds[i], scaling.scaleFactors[i]); printf("\n"); assert( KERN_SUCCESS == IOHIDSetMouseAcceleration(hdl, 0.3)); NXSetMouseScaling(hdl, &scaling); printf("Scaling[ %d ]: ", scaling.numScaleLevels); for( i = 0; i < scaling.numScaleLevels; i++) printf("(%d,%d), ", scaling.scaleThresholds[i], scaling.scaleFactors[i]); printf("\n"); assert( KERN_SUCCESS == IOHIDGetMouseAcceleration(hdl, &dbl1)); printf("now IOHIDGetMouseAcceleration = %f\n", dbl1); printf("NXKeyRepeatThreshold = %f\n", dbl1); printf("NXAutoDimThreshold = %f\n", NXAutoDimThreshold(hdl)); printf("NXAutoDimTime = %f\n", NXAutoDimTime(hdl)); printf("NXIdleTime = %f\n", NXIdleTime(hdl)); printf("NXAutoDimState = %d\n", NXAutoDimState(hdl)); printf("NXAutoDimBrightness = %f\n", NXAutoDimBrightness(hdl)); printf("NXScreenBrightness = %f\n", NXScreenBrightness(hdl)); NXSetAutoDimThreshold( hdl, 200.0 ); // NXSetAutoDimState( hdl, 1 ); NXSetAutoDimBrightness( hdl, 0.5 ); NXSetScreenBrightness( hdl, 0.7 ); printf("now NXAutoDimThreshold = %f\n", NXAutoDimThreshold(hdl)); printf("NXAutoDimTime = %f\n", NXAutoDimTime(hdl)); printf("NXIdleTime = %f\n", NXIdleTime(hdl)); printf("NXAutoDimState = %d\n", NXAutoDimState(hdl)); printf("NXAutoDimBrightness = %f\n", NXAutoDimBrightness(hdl)); printf("NXScreenBrightness = %f\n", NXScreenBrightness(hdl)); mapSize = NXKeyMappingLength(hdl); map = (char *) malloc( mapSize ); mapping.mapping = map; mapping.size = mapSize; assert( &mapping == NXGetKeyMapping(hdl, &mapping)); pmap = (unsigned int *) map; if(0) while ((((char *)pmap) - map) < mapSize) { printf("%04x: ", ((char *)pmap) - map); for( j = 0; j < 8; j++ ) { printf("%08x ", *pmap++); if( (((char *)pmap) - map) >= mapSize) break; } printf("\n"); } map[ 0x32 ] = 0x62; // a == b assert( &mapping == NXSetKeyMapping(hdl, &mapping)); printf("sleeping...\n"); thread_switch( 0, SWITCH_OPTION_WAIT, 10 * 1000 ); NXResetKeyboard(hdl); NXResetMouse(hdl); return( 0 ); }