|  |  | @ -113,7 +113,7 @@ static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned l | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /** Used variables to keep track of the menu */ |  |  |  | /** Used variables to keep track of the menu */ | 
			
		
	
		
		
			
				
					
					|  |  |  | volatile uint8_t buttons;//Contains the bits of the currently pressed buttons.
 |  |  |  | volatile uint8_t buttons;//Contains the bits of the currently pressed buttons.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | volatile uint8_t buttons_keypad; // to store the keypad shiftregister values
 |  |  |  | volatile uint8_t buttons_reprapworld_keypad; // to store the reprapworld_keypad shiftregister values
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | uint8_t currentMenuViewOffset;              /* scroll offset in the current menu */ |  |  |  | uint8_t currentMenuViewOffset;              /* scroll offset in the current menu */ | 
			
		
	
		
		
			
				
					
					|  |  |  | uint32_t blocking_enc; |  |  |  | uint32_t blocking_enc; | 
			
		
	
	
		
		
			
				
					|  |  | @ -688,19 +688,18 @@ menu_edit_type(float, float51, ftostr51, 10) | 
			
		
	
		
		
			
				
					
					|  |  |  | menu_edit_type(float, float52, ftostr52, 100) |  |  |  | menu_edit_type(float, float52, ftostr52, 100) | 
			
		
	
		
		
			
				
					
					|  |  |  | menu_edit_type(unsigned long, long5, ftostr5, 0.01) |  |  |  | menu_edit_type(unsigned long, long5, ftostr5, 0.01) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #ifdef KEYPAD |  |  |  | #ifdef REPRAPWORLD_KEYPAD | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	static void keypad_move_y_down() { |  |  |  | 	static void reprapworld_keypad_move_y_down() { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	SERIAL_ECHO("keypad_move_y_down"); |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         encoderPosition = 1; |  |  |  |         encoderPosition = 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |         move_menu_scale = KEYPAD_MOVE_STEP; |  |  |  |         move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		lcd_move_y(); |  |  |  | 		lcd_move_y(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	static void keypad_move_y_up() { |  |  |  | 	static void reprapworld_keypad_move_y_up() { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		encoderPosition = -1; |  |  |  | 		encoderPosition = -1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		move_menu_scale = KEYPAD_MOVE_STEP; |  |  |  | 		move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     	lcd_move_y(); |  |  |  |     	lcd_move_y(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	static void keypad_move_home() { |  |  |  | 	static void reprapworld_keypad_move_home() { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		//enquecommand_P((PSTR("G28"))); // move all axis home
 |  |  |  | 		//enquecommand_P((PSTR("G28"))); // move all axis home
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// TODO gregor: move all axis home, i have currently only one axis on my prusa i3
 |  |  |  | 		// TODO gregor: move all axis home, i have currently only one axis on my prusa i3
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		enquecommand_P((PSTR("G28 Y"))); |  |  |  | 		enquecommand_P((PSTR("G28 Y"))); | 
			
		
	
	
		
		
			
				
					|  |  | @ -770,7 +769,7 @@ void lcd_init() | 
			
		
	
		
		
			
				
					
					|  |  |  |     WRITE(BTN_EN1,HIGH); |  |  |  |     WRITE(BTN_EN1,HIGH); | 
			
		
	
		
		
			
				
					
					|  |  |  |     WRITE(BTN_EN2,HIGH); |  |  |  |     WRITE(BTN_EN2,HIGH); | 
			
		
	
		
		
			
				
					
					|  |  |  |     WRITE(BTN_ENC,HIGH); |  |  |  |     WRITE(BTN_ENC,HIGH); | 
			
		
	
		
		
			
				
					
					|  |  |  |     #ifdef KEYPAD |  |  |  |     #ifdef REPRAPWORLD_KEYPAD | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       pinMode(SHIFT_CLK,OUTPUT); |  |  |  |       pinMode(SHIFT_CLK,OUTPUT); | 
			
		
	
		
		
			
				
					
					|  |  |  |       pinMode(SHIFT_LD,OUTPUT); |  |  |  |       pinMode(SHIFT_LD,OUTPUT); | 
			
		
	
		
		
			
				
					
					|  |  |  |       pinMode(SHIFT_OUT,INPUT); |  |  |  |       pinMode(SHIFT_OUT,INPUT); | 
			
		
	
	
		
		
			
				
					|  |  | @ -823,15 +822,15 @@ void lcd_update() | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (lcd_next_update_millis < millis()) |  |  |  |     if (lcd_next_update_millis < millis()) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  | #ifdef ULTIPANEL |  |  |  | #ifdef ULTIPANEL | 
			
		
	
		
		
			
				
					
					|  |  |  | 		#ifdef KEYPAD |  |  |  | 		#ifdef REPRAPWORLD_KEYPAD | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         	if (KEYPAD_MOVE_Y_DOWN) { |  |  |  |         	if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         		keypad_move_y_down(); |  |  |  |         		reprapworld_keypad_move_y_down(); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         	} |  |  |  |         	} | 
			
		
	
		
		
			
				
					
					|  |  |  |         	if (KEYPAD_MOVE_Y_UP) { |  |  |  |         	if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         		keypad_move_y_up(); |  |  |  |         		reprapworld_keypad_move_y_up(); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         	} |  |  |  |         	} | 
			
		
	
		
		
			
				
					
					|  |  |  |         	if (KEYPAD_MOVE_HOME) { |  |  |  |         	if (REPRAPWORLD_KEYPAD_MOVE_HOME) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         		keypad_move_home(); |  |  |  |         		reprapworld_keypad_move_home(); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         	} |  |  |  |         	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		#endif |  |  |  | 		#endif | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (encoderDiff) |  |  |  |         if (encoderDiff) | 
			
		
	
	
		
		
			
				
					|  |  | @ -914,18 +913,20 @@ void lcd_buttons_update() | 
			
		
	
		
		
			
				
					
					|  |  |  |     if((blocking_enc<millis()) && (READ(BTN_ENC)==0)) |  |  |  |     if((blocking_enc<millis()) && (READ(BTN_ENC)==0)) | 
			
		
	
		
		
			
				
					
					|  |  |  |         newbutton |= EN_C; |  |  |  |         newbutton |= EN_C; | 
			
		
	
		
		
			
				
					
					|  |  |  |     buttons = newbutton; |  |  |  |     buttons = newbutton; | 
			
		
	
		
		
			
				
					
					|  |  |  |     // for the keypad
 |  |  |  |     #ifdef REPRAPWORLD_KEYPAD | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t newbutton_keypad=0; |  |  |  |       // for the reprapworld_keypad
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     WRITE(SHIFT_LD,LOW); |  |  |  |       uint8_t newbutton_reprapworld_keypad=0; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     WRITE(SHIFT_LD,HIGH); |  |  |  |       WRITE(SHIFT_LD,LOW); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     for(int8_t i=0;i<8;i++) { |  |  |  |       WRITE(SHIFT_LD,HIGH); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         newbutton_keypad = newbutton_keypad>>1; |  |  |  |       for(int8_t i=0;i<8;i++) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         if(READ(SHIFT_OUT)) |  |  |  |           newbutton_reprapworld_keypad = newbutton_reprapworld_keypad>>1; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             newbutton_keypad|=(1<<7); |  |  |  |           if(READ(SHIFT_OUT)) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         WRITE(SHIFT_CLK,HIGH); |  |  |  |               newbutton_reprapworld_keypad|=(1<<7); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         WRITE(SHIFT_CLK,LOW); |  |  |  |           WRITE(SHIFT_CLK,HIGH); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |           WRITE(SHIFT_CLK,LOW); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     buttons_keypad=~newbutton_keypad; //invert it, because a pressed switch produces a logical 0
 |  |  |  |       } | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	#endif | 
			
		
	
		
		
			
				
					
					|  |  |  | #else   //read it from the shift register
 |  |  |  | #else   //read it from the shift register
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t newbutton=0; |  |  |  |     uint8_t newbutton=0; | 
			
		
	
		
		
			
				
					
					|  |  |  |     WRITE(SHIFT_LD,LOW); |  |  |  |     WRITE(SHIFT_LD,LOW); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |