| und & operatoren.



  • Hallo ich habe folgendes Problem:
    Der COde soll rebooten wenn [str] und [alt] gedrückt wurde:

    if(key >= 0x80)
    	{
    		saw_break_code = 1;
    		key &= 0x7F;
    	}
    /* the only break codes we're interested in are Shift, Ctrl, Alt */
    	if(saw_break_code)
    	{
    		if(key == RAW1_LEFT_ALT || key == RAW1_RIGHT_ALT)
    			{kbd_status &= ~KBD_META_ALT;kprintf("los alt");}
    		else if(key == RAW1_LEFT_CTRL || key == RAW1_RIGHT_CTRL)
    			{kbd_status &= ~KBD_META_CTRL;kprintf("los str");}
    		else if(key == RAW1_LEFT_SHIFT || key == RAW1_RIGHT_SHIFT)
    			{kbd_status &= ~KBD_META_SHIFT;}
    
    		saw_break_code = 0;
    		return 0;
    	}
    /* it's a make key: check the "meta" keys, as above */
    	if(key == RAW_BACKSPACE)
    	{
    		kprintf("back");
    		return 0;
    	}
    	if(key == RAW_DEL)
    	{		kprintf("del");
    
    		return 0;
    	}
    	if(key == RAW1_LEFT_ALT || key == RAW1_RIGHT_ALT)
    	{
    		kbd_status |= KBD_META_ALT;kprintf("gedrückt alt");
    		return 0;
    	}
    	if(key == RAW1_LEFT_CTRL || key == RAW1_RIGHT_CTRL)
    	{
    		kbd_status |= KBD_META_CTRL;
    kprintf("gedrückt str");
    		return 0;
    	}
    	if(key == RAW1_LEFT_SHIFT || key == RAW1_RIGHT_SHIFT)
    	{
    		kbd_status |= KBD_META_SHIFT;
    		return 0;
    	}
    /* Scroll Lock, Num Lock, and Caps Lock set the LEDs. These keys
    have on-off (toggle or XOR) action, instead of momentary action */
    	if(key == RAW1_SCROLL_LOCK)
    	{
    		kbd_status ^= KBD_META_SCRL;
    		goto LEDS;
    	}
    	if(key == RAW1_NUM_LOCK)
    	{
    		kbd_status ^= KBD_META_NUM;
    		goto LEDS;
    	}
    	if(key == RAW1_CAPS_LOCK)
    	{
    		kbd_status ^= KBD_META_CAPS;
    LEDS:		write_kbd(0x60, 0xED);	/* "set LEDs" command */
    		temp = 0;
    		if(kbd_status & KBD_META_SCRL)
    			temp |= 1;
    		if(kbd_status & KBD_META_NUM)
    			temp |= 2;
    		if(kbd_status & KBD_META_CAPS)
    			temp |= 4;
    		write_kbd(0x60, temp);	/* bottom 3 bits set LEDs */
    		return 0;
    	}
    	if((kbd_status & KBD_META_CTRL) && (kbd_status & KBD_META_ALT) )
    	{
    		kprintf("\n[42;37;1m""*** rebooting!");
    		reboot();
    	}
    


  • Habe aus versehen tab und enter gedrückt ...
    Wollte mich aufjedenfall schon mal im voraus bedanken.



  • vielleicht sagst du uns auch, was das Problem ist (wir können nämlich nicht hellsehen)



  • Naja ganz einfach der code rebootet nicht 😉
    habe es jetzt aber gelöst indem ich die return 0 lls entferne


Anmelden zum Antworten