Lines Matching refs:palm

359 	t->palm.state = PALM_NONE;
376 t->palm.time = time;
452 t->palm.state = PALM_NONE;
455 t->palm.time = 0;
836 t->palm.state == PALM_NONE &&
847 t->palm.state == PALM_NONE &&
857 return t->palm.first.x < tp->palm.left_edge ||
858 t->palm.first.x > tp->palm.right_edge;
864 return t->palm.first.y < tp->palm.upper_edge;
870 return t->point.x < tp->palm.left_edge ||
871 t->point.x > tp->palm.right_edge;
877 return t->point.y < tp->palm.upper_edge;
894 t->palm.state = PALM_TYPING;
895 t->palm.first = t->point;
901 t->palm.state == PALM_TYPING) {
903 key press, release it on timeout. Benefit: a palm rested
908 if (t->palm.time == 0 ||
909 t->palm.time > tp->dwt.keyboard_last_press_time) {
910 t->palm.state = PALM_NONE;
912 "palm: touch %d released, timeout after typing\n",
925 if (!tp->palm.monitor_trackpoint)
928 if (t->palm.state == PALM_NONE &&
930 tp->palm.trackpoint_active) {
931 t->palm.state = PALM_TRACKPOINT;
935 if (t->palm.state == PALM_TRACKPOINT &&
937 !tp->palm.trackpoint_active) {
939 if (t->palm.time == 0 ||
940 t->palm.time > tp->palm.trackpoint_last_event_time) {
941 t->palm.state = PALM_NONE;
943 "palm: touch %d released, timeout after trackpoint\n", t->index);
955 if (!tp->palm.use_mt_tool)
958 if (t->palm.state != PALM_NONE &&
959 t->palm.state != PALM_TOOL_PALM)
962 if (t->palm.state == PALM_NONE &&
964 t->palm.state = PALM_TOOL_PALM;
965 else if (t->palm.state == PALM_TOOL_PALM &&
967 t->palm.state = PALM_NONE;
969 return t->palm.state == PALM_TOOL_PALM;
982 if (time < t->palm.time + PALM_TIMEOUT && !tp_palm_in_edge(tp, t)) {
989 delta = device_delta(t->point, t->palm.first);
1007 /* If we have at least one other active non-palm touch make this
1008 * touch non-palm too. This avoids palm detection during two-finger
1011 * Note: if both touches start in the palm zone within the same
1013 * here as non-palm touch. This is too niche to worry about for now.
1020 other->palm.state == PALM_NONE) {
1033 if (!tp->palm.use_size)
1036 /* If a finger size is large enough for palm, we stick with that and
1038 if (t->palm.state != PALM_NONE && t->palm.state != PALM_TOUCH_SIZE)
1041 if (t->major > tp->palm.size_threshold ||
1042 t->minor > tp->palm.size_threshold) {
1043 if (t->palm.state != PALM_TOUCH_SIZE)
1045 "palm: touch %d size exceeded\n",
1047 t->palm.state = PALM_TOUCH_SIZE;
1059 if (t->palm.state == PALM_EDGE) {
1061 t->palm.state = PALM_NONE;
1063 "palm: touch %d released, multiple fingers\n",
1066 /* If labelled a touch as palm, we unlabel as palm when
1067 we move out of the palm edge zone within the timeout, provided
1071 t->palm.state = PALM_NONE;
1073 "palm: touch %d released, out of edge zone\n",
1083 /* palm must start in exclusion zone, it's ok to move into
1084 the zone without being a palm */
1091 t->palm.state = PALM_EDGE;
1092 t->palm.time = time;
1093 t->palm.first = t->point;
1103 if (!tp->palm.use_pressure)
1106 if (t->palm.state != PALM_NONE &&
1107 t->palm.state != PALM_PRESSURE)
1110 if (t->pressure > tp->palm.pressure_threshold)
1111 t->palm.state = PALM_PRESSURE;
1113 return t->palm.state == PALM_PRESSURE;
1124 t->palm.state = PALM_ARBITRATION;
1133 enum touch_palm_state oldstate = t->palm.state;
1158 * in case pressure triggers on a non-palm touch. And again after
1168 if (oldstate == t->palm.state)
1171 switch (t->palm.state) {
1182 palm_state = "tool-palm";
1199 "palm: touch %d (%s), palm detected (%s)\n",
1865 if (tp->palm.trackpoint_active || tp->dwt.keyboard_active) {
1974 libinput_timer_cancel(&tp->palm.trackpoint_timer);
1978 tp->palm.monitor_trackpoint)
1980 &tp->palm.trackpoint_listener);
2021 libinput_timer_destroy(&tp->palm.trackpoint_timer);
2189 if (tp->palm.trackpoint_active) {
2191 tp->palm.trackpoint_active = false;
2193 tp->palm.trackpoint_event_count = 0;
2201 if (!tp->palm.dwtp_enabled)
2209 tp->palm.trackpoint_last_event_time = time;
2210 tp->palm.trackpoint_event_count++;
2212 /* Require at least three events before enabling palm detection */
2213 if (tp->palm.trackpoint_event_count < 3) {
2214 libinput_timer_set(&tp->palm.trackpoint_timer,
2219 if (!tp->palm.trackpoint_active) {
2221 tp->palm.trackpoint_active = true;
2224 libinput_timer_set(&tp->palm.trackpoint_timer,
2239 evdev_log_debug(tp->device, "palm: keyboard timeout refresh\n");
2247 evdev_log_debug(tp->device, "palm: keyboard timeout\n");
2404 "palm: dwt activated with %s<->%s\n",
2428 if (tp->palm.monitor_trackpoint)
2430 &tp->palm.trackpoint_listener,
2639 if (tp->palm.monitor_trackpoint)
2641 &tp->palm.trackpoint_listener);
2808 * event is caught as palm touch. */
3247 tp->palm.dwtp_enabled = (enable == LIBINPUT_CONFIG_DWTP_ENABLED);
3258 return tp->palm.dwtp_enabled ?
3330 tp->palm.dwtp_enabled = tp_dwtp_default_enabled(tp);
3335 tp->palm.config.is_available = tp_dwtp_config_is_available;
3336 tp->palm.config.set_enabled = tp_dwtp_config_set;
3337 tp->palm.config.get_enabled = tp_dwtp_config_get;
3338 tp->palm.config.get_default_enabled = tp_dwtp_config_get_default;
3339 device->base.config.dwtp = &tp->palm.config;
3354 /* Edge palm detection hurts more than it helps on Apple touchpads. */
3360 /* Enable edge palm detection on touchpads >= 70 mm. Anything
3365 /* palm edges are 8% of the width on each side */
3368 tp->palm.left_edge = edges.x;
3372 tp->palm.right_edge = edges.x;
3378 tp->palm.upper_edge = edges.y;
3407 tp->palm.use_pressure = false;
3411 tp->palm.pressure_threshold = tp_read_palm_pressure_prop(tp, device);
3412 if (tp->palm.pressure_threshold != 0) {
3413 tp->palm.use_pressure = true;
3416 "palm: pressure threshold is %d\n",
3417 tp->palm.pressure_threshold);
3436 tp->palm.use_size = true;
3437 tp->palm.size_threshold = threshold;
3465 tp->palm.right_edge = INT_MAX;
3466 tp->palm.left_edge = INT_MIN;
3467 tp->palm.upper_edge = INT_MIN;
3477 tp->palm.monitor_trackpoint = true;
3482 tp->palm.use_mt_tool = true;
3500 libinput_timer_init(&tp->palm.trackpoint_timer,
3542 const int touchpad_width_mm = 69, /* 1 under palm detection */