コード例 #1
0
/**
 * Write device file "mode_custom"
 *
 * Sets the keyboard to custom mode whenever the file is written to
 */
static ssize_t razer_attr_write_mode_custom(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
    struct usb_interface *intf = to_usb_interface(dev->parent);
    struct usb_device *usb_dev = interface_to_usbdev(intf);
    razer_reset(usb_dev);
    razer_set_custom_mode(usb_dev);
    return count;
}
コード例 #2
0
ファイル: first_test.c プロジェクト: circuz/RazerConfig
int main(int argc,char *argv[])
{
	uid_t uid = getuid();
	if(uid != 0)
		printf("This program needs root to work correctly.\n");	
	struct razer_chroma *chroma = razer_open();
	if(!chroma)
		exit(1);
 	razer_set_input_handler(chroma,input_handler);
 	razer_set_custom_mode(chroma);
	razer_clear_all(chroma->keys);
	razer_update_keys(chroma,chroma->keys);
	for(int i=0;i<10;i++)
		keys_history[i] = -1;
 	signal(SIGINT,stop);
 	signal(SIGKILL,stop);
 	signal(SIGTERM,stop);	
	effect(chroma);
 	razer_close(chroma);
}
コード例 #3
0
void razer_update_keys(struct razer_chroma *chroma, struct razer_keys *keys)
{
	int i;
	if(!chroma->update_keys_file)
		razer_open_update_keys_file(chroma);
	if(chroma->update_keys_file)
	{
		for(i=0;i<6;i++)
		{
			if(keys->update_mask &(1<<i))
				fwrite((void*)&keys->rows[i],sizeof(struct razer_rgb_row),1,chroma->update_keys_file);
		}
	}
	#ifdef USE_DEBUGGING
	else
		printf("error setting mode to custom\n");
	#endif
	fflush(chroma->update_keys_file);
	if(keys->update_mask)
    	razer_set_custom_mode(chroma);
    keys->update_mask=0;
}
コード例 #4
0
int main(int argc,char *argv[])
{
	uid_t uid = getuid();
	if(uid != 0)
		printf("input example needs root to work correctly.\n");	
	struct razer_chroma *chroma = razer_open(NULL,NULL);
  
  if(!chroma)
		exit(1);
  system("stty -echo");
 	razer_set_event_handler(chroma,event_handler);
 	razer_set_custom_mode(chroma);
	razer_clear_all(chroma->active_device->leds);
	razer_update_leds(chroma,chroma->active_device->leds);
	for(int i=0;i<10;i++)
		keys_history[i] = -1;
 	signal(SIGINT,stop);
 	signal(SIGKILL,stop);
 	signal(SIGTERM,stop);	
	effect(chroma);
 	razer_close(chroma);
  system("stty echo");
}
コード例 #5
0
int main(int argc,char *argv[])
{


    struct razer_chroma *kbd=razer_open(NULL,NULL);
    if(!kbd) {
        printf("failed to initialize!!!\n");
        exit(0);
    }
    razer_set_custom_mode(kbd);
    razer_clear_all(kbd->active_device->leds);
    razer_update_leds(kbd, kbd->active_device->leds);

    struct razer_rgb color;
    struct razer_pos pos;

    while(1) {
        int cmd;
        scanf("%u", &cmd);
        if(cmd == 1) {
            int x = 0, y = 0;
            int ir, ig, ib;

            printf("Enter x y r g b: ");
            scanf("%u %u %u %u %u", &x, &y, &ir, &ig, &ib);
            printf("Setting key at [%u,%u] to #%x%x%x...", x, y, ir, ig, ib);
            color.r = ir;
            color.g = ig;
            color.b = ib;
            pos.x = x;
            pos.y = y;
            razer_set_led_pos(kbd->active_device->leds, &pos, &color);
            razer_update_leds(kbd, kbd->active_device->leds);
            printf("Done!\n");
        }
        if(cmd == 2) {
            char targs[] = ""; //dziala, char targs[255]
            int ir, ig, ib;

            printf("Enter r g b: ");
            scanf("%u %u %u", &ir, &ig, &ib);
            printf("Enter str: ");
            scanf("%s", targs);
            printf("Setting keys of [%s] to %u %u %u...\n", targs, ir, ig, ib);
            color.r = ir;
            color.g = ig;
            color.b = ib;

            for(unsigned int i = 0; i < strlen(targs); i++) {
                printf("Setting %c...\n", targs[i]);
                razer_convert_ascii_to_pos(targs[i],&pos);
                razer_set_led_pos(kbd->active_device->leds,&pos,&color);
            }
            razer_update_leds(kbd, kbd->active_device->leds);
            printf("Done!\n");

        }

        if(cmd == 3) {
            int ir, ig, ib;
            printf("Enter r g b: ");
            scanf("%u %u %u", &ir, &ig, &ib);
            color.r = ir;
            color.g = ig;
            color.b = ib;
            printf("Setting keys to %u %u %u...\n", ir, ig, ib);
            razer_set_all(kbd->active_device->leds, &color);
            razer_update_leds(kbd, kbd->active_device->leds);
            printf("Done!\n");
        }


        if(cmd==0) break;

    }
    printf("Exiting...");
    razer_close(kbd);
}
コード例 #6
0
struct razer_daemon *daemon_open(void)
{
 	//signal(SIGINT,stop);
 	//signal(SIGKILL,stop);
        //signal(SIGTERM,stop);
	struct razer_daemon *daemon = (struct razer_daemon*)malloc(sizeof(struct razer_daemon));
 	daemon->chroma = NULL;
 	daemon->running = 1;
 	daemon->is_paused = 0;
 	daemon->fps = 12;
 	daemon->libs_uid = 1;
 	daemon->libs = list_Create(0,0);
 	daemon->effects_uid = 1;
 	daemon->effects = list_Create(0,0);
 	daemon->fx_render_nodes_uid = 1;
 	daemon->fx_render_nodes = list_Create(0,0);//list of all render_nodes available
 	daemon->is_render_nodes_dirty = 0;
 	daemon->render_nodes = list_Create(0,0);

 	if(!(daemon->chroma=razer_open()))
 	{
 		free(daemon->chroma);
		list_Close(daemon->libs);
		list_Close(daemon->fx_render_nodes);
		list_Close(daemon->render_nodes);
		list_Close(daemon->effects);
 		free(daemon);
		return(NULL);
	}
	#ifdef USE_DBUS
	 	daemon->dbus = NULL;
		#ifdef USE_DEBUGGING
			printf("dbus: opened\n");
		#endif
	 	if(!daemon_dbus_open(daemon))
	 	{
	 		free(daemon->chroma);
			list_Close(daemon->libs);
			list_Close(daemon->fx_render_nodes);
			list_Close(daemon->render_nodes);
			list_Close(daemon->effects);
	 		free(daemon);
			return(NULL);
		}
	 	if(!daemon_dbus_announce(daemon))
	 	{
 			free(daemon->chroma);
			list_Close(daemon->libs);
			list_Close(daemon->fx_render_nodes);
			list_Close(daemon->render_nodes);
			list_Close(daemon->effects);
	 		free(daemon);
			return(NULL);
		}
	#endif
	razer_set_input_handler(daemon->chroma,daemon_input_event_handler);
	daemon->chroma->tag = daemon;
	daemon->frame_buffer = razer_create_rgb_frame();
	daemon->frame_buffer_linked_uid = 0;
	daemon->return_render_node = NULL; //TODO remember what i wanted to achieve with this variable ... :-)

	razer_set_custom_mode(daemon->chroma);
	razer_clear_all(daemon->chroma->keys);
	razer_update_keys(daemon->chroma,daemon->chroma->keys);

	//TODO Move to configuration options (dbus race condition present)

	#ifdef USE_DEBUGGING
		struct daemon_lib *lib = daemon_load_fx_lib(daemon,"daemon/fx/pez2001_collection_debug.so");
	#else
		//void *lib = daemon_load_fx_lib(daemon,"daemon/fx/pez2001_collection.so");
		struct daemon_lib *lib = daemon_load_fx_lib(daemon,"/usr/share/razer_bcd/fx/pez2001_collection.so");
	#endif
	if(lib)
		daemon_register_lib(daemon,lib);

	#ifdef USE_DEBUGGING
		struct daemon_lib *blib = daemon_load_fx_lib(daemon,"daemon/fx/pez2001_light_blast_debug.so");
	#else
		struct daemon_lib *blib = daemon_load_fx_lib(daemon,"/usr/share/razer_bcd/fx/pez2001_light_blast.so");
	#endif
	if(lib)
		daemon_register_lib(daemon,blib);

	//daemon->render_node = daemon_create_render_node(daemon,daemon_get_effect(daemon,2),-1,-1,0,"First Render Node","Default Render Node");
	daemon->render_node = daemon_create_render_node(daemon,daemon_get_effect(daemon,11),-1,-1,0,"First Render Node","Default Render Node");
	daemon_register_render_node(daemon,daemon->render_node);
	daemon_compute_render_nodes(daemon);
	daemon_connect_frame_buffer(daemon,daemon->render_node);

	/*daemon->render_node = daemon_create_render_node(daemon,daemon_get_effect(daemon,3),-1,-1,0,"Second Test Render Node","Additional Testing Render Node");
	daemon_register_render_node(daemon,daemon->render_node);
	daemon_compute_render_nodes(daemon);
	*/
	
	// Catch SIGTERM
	struct sigaction sigterm_action;
	memset(&sigterm_action, 0, sizeof(struct sigaction));
	sigterm_action.sa_handler = got_sigterm_signal;
	sigaction(SIGTERM, &sigterm_action, NULL);
	
 	return(daemon);
}