mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	config: support <tapAndDrag> and <dragLock>
This commit is contained in:
		
							parent
							
								
									4268991105
								
							
						
					
					
						commit
						3c3656f74e
					
				
					 6 changed files with 48 additions and 0 deletions
				
			
		| 
						 | 
					@ -407,6 +407,14 @@ Therefore, where multiple objects of the same kind are required (for example
 | 
				
			||||||
	left button, right button, and middle button, respectively (lrm) (the
 | 
						left button, right button, and middle button, respectively (lrm) (the
 | 
				
			||||||
	default), or to left button, middle button, and right button (lmr).
 | 
						default), or to left button, middle button, and right button (lmr).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*<libinput><device category=""><tapAndDrag>* [yes|no]
 | 
				
			||||||
 | 
						Enable or disable tap-and-drag for this category. Tap-and-drag processes
 | 
				
			||||||
 | 
						a tap immediately followed by a finger down as the start of a drag.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*<libinput><device category=""><dragLock>* [yes|no]
 | 
				
			||||||
 | 
						Enable or disable drag lock for this category. Drag lock ignores a
 | 
				
			||||||
 | 
						momentary release of a finger during tap-and-dragging.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*<libinput><device category=""><middleEmulation>* [yes|no]
 | 
					*<libinput><device category=""><middleEmulation>* [yes|no]
 | 
				
			||||||
	Enable or disable middle button emulation for this category. Middle
 | 
						Enable or disable middle button emulation for this category. Middle
 | 
				
			||||||
	emulation processes a simultaneous left and right click as a press of
 | 
						emulation processes a simultaneous left and right click as a press of
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -392,6 +392,8 @@
 | 
				
			||||||
      <accelProfile></accelProfile>
 | 
					      <accelProfile></accelProfile>
 | 
				
			||||||
      <tap>yes</tap>
 | 
					      <tap>yes</tap>
 | 
				
			||||||
      <tapButtonMap></tapButtonMap>
 | 
					      <tapButtonMap></tapButtonMap>
 | 
				
			||||||
 | 
					      <tapAndDrag></tapAndDrag>
 | 
				
			||||||
 | 
					      <dragLock></dragLock>
 | 
				
			||||||
      <middleEmulation></middleEmulation>
 | 
					      <middleEmulation></middleEmulation>
 | 
				
			||||||
      <disableWhileTyping></disableWhileTyping>
 | 
					      <disableWhileTyping></disableWhileTyping>
 | 
				
			||||||
    </device>
 | 
					    </device>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,8 @@ struct libinput_category {
 | 
				
			||||||
	int left_handed;
 | 
						int left_handed;
 | 
				
			||||||
	enum libinput_config_tap_state tap;
 | 
						enum libinput_config_tap_state tap;
 | 
				
			||||||
	enum libinput_config_tap_button_map tap_button_map;
 | 
						enum libinput_config_tap_button_map tap_button_map;
 | 
				
			||||||
 | 
						enum libinput_config_drag_state tap_and_drag;
 | 
				
			||||||
 | 
						enum libinput_config_drag_lock_state drag_lock;
 | 
				
			||||||
	enum libinput_config_accel_profile accel_profile;
 | 
						enum libinput_config_accel_profile accel_profile;
 | 
				
			||||||
	enum libinput_config_middle_emulation_state middle_emu;
 | 
						enum libinput_config_middle_emulation_state middle_emu;
 | 
				
			||||||
	enum libinput_config_dwt_state dwt;
 | 
						enum libinput_config_dwt_state dwt;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,8 @@ libinput_category_init(struct libinput_category *l)
 | 
				
			||||||
	l->left_handed = -1;
 | 
						l->left_handed = -1;
 | 
				
			||||||
	l->tap = LIBINPUT_CONFIG_TAP_ENABLED;
 | 
						l->tap = LIBINPUT_CONFIG_TAP_ENABLED;
 | 
				
			||||||
	l->tap_button_map = LIBINPUT_CONFIG_TAP_MAP_LRM;
 | 
						l->tap_button_map = LIBINPUT_CONFIG_TAP_MAP_LRM;
 | 
				
			||||||
 | 
						l->tap_and_drag = -1;
 | 
				
			||||||
 | 
						l->drag_lock = -1;
 | 
				
			||||||
	l->accel_profile = -1;
 | 
						l->accel_profile = -1;
 | 
				
			||||||
	l->middle_emu = -1;
 | 
						l->middle_emu = -1;
 | 
				
			||||||
	l->dwt = -1;
 | 
						l->dwt = -1;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -408,6 +408,22 @@ fill_libinput_category(char *nodename, char *content)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			wlr_log(WLR_ERROR, "invalid tapButtonMap");
 | 
								wlr_log(WLR_ERROR, "invalid tapButtonMap");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						} else if (!strcasecmp(nodename, "tapAndDrag")) {
 | 
				
			||||||
 | 
							int ret = parse_bool(content, -1);
 | 
				
			||||||
 | 
							if (ret < 0) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							current_libinput_category->tap_and_drag = ret
 | 
				
			||||||
 | 
								? LIBINPUT_CONFIG_DRAG_ENABLED
 | 
				
			||||||
 | 
								: LIBINPUT_CONFIG_DRAG_DISABLED;
 | 
				
			||||||
 | 
						} else if (!strcasecmp(nodename, "dragLock")) {
 | 
				
			||||||
 | 
							int ret = parse_bool(content, -1);
 | 
				
			||||||
 | 
							if (ret < 0) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							current_libinput_category->drag_lock = ret
 | 
				
			||||||
 | 
								? LIBINPUT_CONFIG_DRAG_LOCK_ENABLED
 | 
				
			||||||
 | 
								: LIBINPUT_CONFIG_DRAG_LOCK_DISABLED;
 | 
				
			||||||
	} else if (!strcasecmp(nodename, "accelProfile")) {
 | 
						} else if (!strcasecmp(nodename, "accelProfile")) {
 | 
				
			||||||
		current_libinput_category->accel_profile =
 | 
							current_libinput_category->accel_profile =
 | 
				
			||||||
			get_accel_profile(content);
 | 
								get_accel_profile(content);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/seat.c
									
										
									
									
									
								
							
							
						
						
									
										18
									
								
								src/seat.c
									
										
									
									
									
								
							| 
						 | 
					@ -95,6 +95,24 @@ configure_libinput(struct wlr_input_device *wlr_input_device)
 | 
				
			||||||
			dc->tap_button_map);
 | 
								dc->tap_button_map);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (libinput_device_config_tap_get_finger_count(libinput_dev) <= 0
 | 
				
			||||||
 | 
								|| dc->tap_and_drag < 0) {
 | 
				
			||||||
 | 
							wlr_log(WLR_INFO, "tap-and-drag not configured");
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							wlr_log(WLR_INFO, "tap-and-drag configured");
 | 
				
			||||||
 | 
							libinput_device_config_tap_set_drag_enabled(
 | 
				
			||||||
 | 
								libinput_dev, dc->tap_and_drag);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (libinput_device_config_tap_get_finger_count(libinput_dev) <= 0
 | 
				
			||||||
 | 
								|| dc->drag_lock < 0) {
 | 
				
			||||||
 | 
							wlr_log(WLR_INFO, "drag lock not configured");
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							wlr_log(WLR_INFO, "drag lock configured");
 | 
				
			||||||
 | 
							libinput_device_config_tap_set_drag_lock_enabled(
 | 
				
			||||||
 | 
								libinput_dev, dc->drag_lock);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (libinput_device_config_scroll_has_natural_scroll(libinput_dev) <= 0
 | 
						if (libinput_device_config_scroll_has_natural_scroll(libinput_dev) <= 0
 | 
				
			||||||
			|| dc->natural_scroll < 0) {
 | 
								|| dc->natural_scroll < 0) {
 | 
				
			||||||
		wlr_log(WLR_INFO, "natural scroll not configured");
 | 
							wlr_log(WLR_INFO, "natural scroll not configured");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue