|  | @@ -56,22 +56,32 @@ namespace abc800
 | 
	
		
			
				|  |  |              uint32_t keyboard_action = 0;
 | 
	
		
			
				|  |  |              if (xTaskNotifyWait(0, ULONG_MAX, &keyboard_action , 5)  == pdPASS) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                if (abc800_gpio.abc800_getupdown()){
 | 
	
		
			
				|  |  | -                    uint8_t key = abc800_gpio.abc800_getkey();
 | 
	
		
			
				|  |  | -                    key800queue ascii = abc800_keyboard.getKeyboardKeycode(key);
 | 
	
		
			
				|  |  | -                    abc800_keyboard.abc800_old_key = key;
 | 
	
		
			
				|  |  | -                    if (xQueueSend(abc800_key_queue_out, (void *)&ascii, 0) != pdTRUE) {
 | 
	
		
			
				|  |  | -                        ESP_LOGE(TAG,"Queue full");
 | 
	
		
			
				|  |  | +                if (keyboard_action == ABC800_KEY_IN_ABC800)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    if (abc800_gpio.abc800_getupdown()){
 | 
	
		
			
				|  |  | +                        uint8_t key = abc800_gpio.abc800_getkey();
 | 
	
		
			
				|  |  | +                        key800queue ascii = abc800_keyboard.getKeyboardKeycode(key);
 | 
	
		
			
				|  |  | +                        abc800_keyboard.abc800_old_key = key;
 | 
	
		
			
				|  |  | +                        if (xQueueSend(abc800_key_queue_out, (void *)&ascii, 0) != pdTRUE) {
 | 
	
		
			
				|  |  | +                            ESP_LOGE(TAG,"Queue full");
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        xTimerStop(abc800_repeat_delay_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | +                        xTimerStop(abc800_repeat_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | +                        xTimerStop(abc800_check_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | +                        xTimerStart(abc800_repeat_delay_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | +                        xTimerStart(abc800_check_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | +                    }else{
 | 
	
		
			
				|  |  | +                        xTimerStop(abc800_repeat_delay_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | +                        xTimerStop(abc800_repeat_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | +                        xTimerStop(abc800_check_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                    xTimerStop(abc800_repeat_delay_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | -                    xTimerStop(abc800_repeat_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | -                    xTimerStop(abc800_check_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | -                    xTimerStart(abc800_repeat_delay_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | -                    xTimerStart(abc800_check_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | -                }else{
 | 
	
		
			
				|  |  | -                    xTimerStop(abc800_repeat_delay_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | -                    xTimerStop(abc800_repeat_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | -                    xTimerStop(abc800_check_timer, portMAX_DELAY);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (keyboard_action == ABC800_KEY_RESET)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    digitalWrite(A800_RST,HIGH);
 | 
	
		
			
				|  |  | +                    delay(1000);
 | 
	
		
			
				|  |  | +                    digitalWrite(A800_RST,LOW);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              }       
 | 
	
	
		
			
				|  | @@ -158,20 +168,29 @@ namespace abc800
 | 
	
		
			
				|  |  |          if ( keyqueue.special == 0x50 ){
 | 
	
		
			
				|  |  |              return(0x08);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (keyqueue.special == 0x3a)
 | 
	
		
			
				|  |  | +        //F1-F8
 | 
	
		
			
				|  |  | +        if (keyqueue.special >= 0x3a && keyqueue.special <= 0x41)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            char x[15]={"10 print \"HEJ\""}; //F1
 | 
	
		
			
				|  |  | -            key800queue key800queue ;
 | 
	
		
			
				|  |  | -            key800queue.modifier=0x00;
 | 
	
		
			
				|  |  | -            key800queue.special=0x00;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            for (uint8_t i=0;i<15;i++){
 | 
	
		
			
				|  |  | -                key800queue.ascii = x[i];
 | 
	
		
			
				|  |  | -                if (xQueueSend(abc800_key_queue_out, (void *)&key800queue, 0) != pdTRUE) {
 | 
	
		
			
				|  |  | -                    ESP_LOGE(TAG,"Queue full");
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            return (0x00);
 | 
	
		
			
				|  |  | +            return (keyqueue.special+0x86);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //F1-F8 Shift
 | 
	
		
			
				|  |  | +        if (keyqueue.special >= 0x3a && keyqueue.special <= 0x41 && (keyqueue.modifier == 0x02 ||  keyqueue.modifier == 0x20))
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return (keyqueue.special+0x96);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //F1-F8 CTRL
 | 
	
		
			
				|  |  | +        if (keyqueue.special >= 0x3a && keyqueue.special <= 0x41 && (keyqueue.modifier == 0x01))
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return (keyqueue.special+0xA6);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //F1-F8 CTRL+SHIFT
 | 
	
		
			
				|  |  | +        if (keyqueue.special >= 0x3a && keyqueue.special <= 0x41 && (keyqueue.modifier == 0x03 ||  keyqueue.modifier == 0x33))
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return (keyqueue.special+0xB6);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (keyqueue.special == 0x45) //F12
 | 
	
		
			
				|  |  |          {
 |