gg: allow easily detecting the edges of key_down keyboard events
							parent
							
								
									b173e55be5
								
							
						
					
					
						commit
						79c7aed3c2
					
				
							
								
								
									
										13
									
								
								vlib/gg/gg.v
								
								
								
								
							
							
						
						
									
										13
									
								
								vlib/gg/gg.v
								
								
								
								
							| 
						 | 
					@ -144,9 +144,11 @@ pub mut:
 | 
				
			||||||
	scroll_x      int
 | 
						scroll_x      int
 | 
				
			||||||
	scroll_y      int
 | 
						scroll_y      int
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
	key_modifiers Modifier
 | 
						key_modifiers     Modifier // the current key modifiers
 | 
				
			||||||
	key_repeat    bool
 | 
						key_repeat        bool     // whether the pressed key was an autorepeated one
 | 
				
			||||||
	pressed_keys  [key_code_max]bool
 | 
						pressed_keys      [key_code_max]bool // an array representing all currently pressed keys
 | 
				
			||||||
 | 
						pressed_keys_edge [key_code_max]bool // true when the previous state of pressed_keys,
 | 
				
			||||||
 | 
						// *before* the current event was different
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub struct Size {
 | 
					pub struct Size {
 | 
				
			||||||
| 
						 | 
					@ -311,7 +313,10 @@ fn gg_event_fn(ce &C.sapp_event, user_data voidptr) {
 | 
				
			||||||
	g.key_repeat = e.key_repeat
 | 
						g.key_repeat = e.key_repeat
 | 
				
			||||||
	if e.typ in [.key_down, .key_up] {
 | 
						if e.typ in [.key_down, .key_up] {
 | 
				
			||||||
		key_idx := int(e.key_code) % key_code_max
 | 
							key_idx := int(e.key_code) % key_code_max
 | 
				
			||||||
		g.pressed_keys[key_idx] = e.typ == .key_down
 | 
							prev := g.pressed_keys[key_idx]
 | 
				
			||||||
 | 
							next := e.typ == .key_down
 | 
				
			||||||
 | 
							g.pressed_keys[key_idx] = next
 | 
				
			||||||
 | 
							g.pressed_keys_edge[key_idx] = prev != next
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if g.config.event_fn != voidptr(0) {
 | 
						if g.config.event_fn != voidptr(0) {
 | 
				
			||||||
		g.config.event_fn(e, g.config.user_data)
 | 
							g.config.event_fn(e, g.config.user_data)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue