1 1.14 blymn /* $NetBSD: synapticsvar.h,v 1.14 2022/04/01 06:31:29 blymn Exp $ */ 2 1.1 christos 3 1.1 christos /* 4 1.2 scw * Copyright (c) 2005, Steve C. Woodford 5 1.1 christos * Copyright (c) 2004, Ales Krenek 6 1.1 christos * Copyright (c) 2004, Kentaro A. Kurahone 7 1.1 christos * All rights reserved. 8 1.3 perry * 9 1.1 christos * Redistribution and use in source and binary forms, with or without 10 1.1 christos * modification, are permitted provided that the following conditions 11 1.1 christos * are met: 12 1.1 christos * 13 1.1 christos * * Redistributions of source code must retain the above copyright 14 1.1 christos * notice, this list of conditions and the following disclaimer. 15 1.1 christos * * Redistributions in binary form must reproduce the above 16 1.1 christos * copyright notice, this list of conditions and the following 17 1.1 christos * disclaimer in the documentation and/or other materials provided 18 1.1 christos * with the distribution. 19 1.1 christos * * Neither the name of the Kentaro A. Kurahone nor the names of its 20 1.1 christos * contributors may be used to endorse or promote products derived 21 1.1 christos * from this software without specific prior written permission. 22 1.1 christos * 23 1.1 christos * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 1.1 christos * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 1.1 christos * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26 1.1 christos * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27 1.1 christos * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28 1.1 christos * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 29 1.1 christos * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 1.1 christos * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 1.1 christos * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 1.1 christos * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33 1.1 christos * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 1.1 christos * POSSIBILITY OF SUCH DAMAGE. 35 1.1 christos * 36 1.1 christos */ 37 1.1 christos 38 1.1 christos #ifndef _DEV_PCKBCPORT_SYNAPTICSVAR_H_ 39 1.1 christos #define _DEV_PCKBCPORT_SYNAPTICSVAR_H_ 40 1.1 christos 41 1.11 blymn #define SYN_MAX_FINGERS 2 42 1.12 blymn #define SYN_PRIMARY_FINGER 0 43 1.12 blymn #define SYN_SECONDARY_FINGER 1 44 1.11 blymn 45 1.1 christos struct synaptics_softc { 46 1.1 christos int caps; 47 1.1 christos 48 1.2 scw int flags; 49 1.6 christos #define SYN_FLAG_HAS_MIDDLE_BUTTON (1 << 0) 50 1.6 christos #define SYN_FLAG_HAS_BUTTONS_4_5 (1 << 1) 51 1.6 christos #define SYN_FLAG_HAS_UP_DOWN_BUTTONS (1 << 2) 52 1.6 christos #define SYN_FLAG_HAS_PASSTHROUGH (1 << 3) 53 1.6 christos #define SYN_FLAG_HAS_PALM_DETECT (1 << 4) 54 1.6 christos #define SYN_FLAG_HAS_MULTI_FINGER (1 << 5) 55 1.6 christos #define SYN_FLAG_HAS_MULTI_FINGER_REPORT (1 << 6) 56 1.6 christos #define SYN_FLAG_HAS_VERTICAL_SCROLL (1 << 7) 57 1.6 christos #define SYN_FLAG_HAS_HORIZONTAL_SCROLL (1 << 8) 58 1.6 christos #define SYN_FLAG_HAS_ONE_BUTTON_CLICKPAD (1 << 9) 59 1.6 christos #define SYN_FLAG_HAS_TWO_BUTTON_CLICKPAD (1 << 10) 60 1.6 christos #define SYN_FLAG_HAS_EXTENDED_WMODE (1 << 11) 61 1.9 blymn #define SYN_FLAG_HAS_ADV_GESTURE_MODE (1 << 12) 62 1.13 blymn #define SYN_FLAG_HAS_MAX_REPORT (1 << 13) 63 1.13 blymn #define SYN_FLAG_HAS_MIN_REPORT (1 << 14) 64 1.2 scw 65 1.11 blymn /* Total number of packets received */ 66 1.12 blymn u_int total_packets; 67 1.11 blymn 68 1.12 blymn /* Keep a per finger count for ballistics */ 69 1.12 blymn u_int packet_count[SYN_MAX_FINGERS]; 70 1.12 blymn 71 1.12 blymn #define SYN_TIME(sc,c) (((sc)->total_packets >= (c)) ? \ 72 1.12 blymn ((sc)->total_packets - (c)) : \ 73 1.12 blymn ((c) - (sc)->total_packets)) 74 1.2 scw 75 1.14 blymn int num_buttons; /* number of external buttons */ 76 1.14 blymn uint8_t button_mask; 77 1.2 scw int up_down; 78 1.2 scw int prev_fingers; 79 1.2 scw 80 1.2 scw int gesture_start_x, gesture_start_y; 81 1.6 christos int gesture_move_x, gesture_move_y; 82 1.2 scw u_int gesture_start_packet; 83 1.2 scw u_int gesture_tap_packet; 84 1.2 scw 85 1.2 scw int gesture_buttons; 86 1.2 scw int gesture_type; 87 1.2 scw #define SYN_GESTURE_SINGLE 0x01 88 1.2 scw #define SYN_GESTURE_DOUBLE 0x02 89 1.2 scw #define SYN_GESTURE_DRAG 0x04 90 1.2 scw #define SYN_IS_SINGLE_TAP(t) ((t) & SYN_GESTURE_SINGLE) 91 1.2 scw #define SYN_IS_DOUBLE_TAP(t) ((t) & SYN_GESTURE_DOUBLE) 92 1.2 scw #define SYN_IS_DRAG(t) ((t) & SYN_GESTURE_DRAG) 93 1.2 scw 94 1.2 scw #define SYN_HIST_SIZE 4 95 1.7 blymn char button_history; 96 1.8 blymn int dz_hold; 97 1.8 blymn int rem_x[SYN_MAX_FINGERS]; 98 1.8 blymn int rem_y[SYN_MAX_FINGERS]; 99 1.8 blymn int rem_z[SYN_MAX_FINGERS]; 100 1.8 blymn int history_x[SYN_MAX_FINGERS][SYN_HIST_SIZE]; 101 1.8 blymn int history_y[SYN_MAX_FINGERS][SYN_HIST_SIZE]; 102 1.8 blymn int history_z[SYN_MAX_FINGERS][SYN_HIST_SIZE]; 103 1.10 jmcneill 104 1.10 jmcneill char ext_left; 105 1.10 jmcneill char ext_right; 106 1.10 jmcneill char ext_middle; 107 1.10 jmcneill char ext_up; 108 1.10 jmcneill char ext_down; 109 1.1 christos }; 110 1.1 christos 111 1.1 christos int pms_synaptics_probe_init(void *vsc); 112 1.1 christos void pms_synaptics_enable(void *vsc); 113 1.1 christos void pms_synaptics_resume(void *vsc); 114 1.1 christos 115 1.1 christos #endif 116