• Home
  • Raw
  • Download

Lines Matching +full:offset +full:- +full:y

19 #include "hid-ids.h"
29 * https://vvvv.org/contribution/udraw-hid
34 * - the touch area which works as a touchpad
35 * - the tablet area which works as a touchpad/drawing tablet
36 * - a joypad with a d-pad, and 7 buttons
37 * - an accelerometer device
55 * in order, X, Y and Z
74 #define MAX_PRESSURE (255 - PRESSURE_OFFSET)
84 * The device's two-finger support is pretty unreliable, as
98 static int clamp_accel(int axis, int offset) in clamp_accel() argument
101 accel_limits[offset].min, in clamp_accel()
102 accel_limits[offset].max); in clamp_accel()
103 axis = (axis - accel_limits[offset].min) / in clamp_accel()
104 ((accel_limits[offset].max - in clamp_accel()
105 accel_limits[offset].min) * 0xFF); in clamp_accel()
114 int x, y, z; in udraw_raw_event() local
129 input_report_key(udraw->joy_input_dev, BTN_WEST, data[0] & 1); in udraw_raw_event()
130 input_report_key(udraw->joy_input_dev, BTN_SOUTH, !!(data[0] & 2)); in udraw_raw_event()
131 input_report_key(udraw->joy_input_dev, BTN_EAST, !!(data[0] & 4)); in udraw_raw_event()
132 input_report_key(udraw->joy_input_dev, BTN_NORTH, !!(data[0] & 8)); in udraw_raw_event()
134 input_report_key(udraw->joy_input_dev, BTN_SELECT, !!(data[1] & 1)); in udraw_raw_event()
135 input_report_key(udraw->joy_input_dev, BTN_START, !!(data[1] & 2)); in udraw_raw_event()
136 input_report_key(udraw->joy_input_dev, BTN_MODE, !!(data[1] & 16)); in udraw_raw_event()
138 x = y = 0; in udraw_raw_event()
141 y = -127; in udraw_raw_event()
144 y = -127; in udraw_raw_event()
151 y = 127; in udraw_raw_event()
155 y = 127; in udraw_raw_event()
158 y = 127; in udraw_raw_event()
159 x = -127; in udraw_raw_event()
162 x = -127; in udraw_raw_event()
165 y = -127; in udraw_raw_event()
166 x = -127; in udraw_raw_event()
172 input_report_abs(udraw->joy_input_dev, ABS_X, x); in udraw_raw_event()
173 input_report_abs(udraw->joy_input_dev, ABS_Y, y); in udraw_raw_event()
175 input_sync(udraw->joy_input_dev); in udraw_raw_event()
178 x = y = 0; in udraw_raw_event()
183 y = data[16] * 256 + data[18]; in udraw_raw_event()
187 /* Save the last one-finger touch */ in udraw_raw_event()
188 udraw->last_one_finger_x = x; in udraw_raw_event()
189 udraw->last_one_finger_y = y; in udraw_raw_event()
190 udraw->last_two_finger_x = -1; in udraw_raw_event()
191 udraw->last_two_finger_y = -1; in udraw_raw_event()
194 * We have a problem because x/y is the one for the in udraw_raw_event()
196 * to user-space otherwise it'll look as if it jumped. in udraw_raw_event()
201 if (udraw->last_two_finger_x == -1) { in udraw_raw_event()
203 udraw->last_two_finger_x = x; in udraw_raw_event()
204 udraw->last_two_finger_y = y; in udraw_raw_event()
206 x = udraw->last_one_finger_x; in udraw_raw_event()
207 y = udraw->last_one_finger_y; in udraw_raw_event()
210 * Offset the 2-finger coords using the in udraw_raw_event()
213 x = x - (udraw->last_two_finger_x in udraw_raw_event()
214 - udraw->last_one_finger_x); in udraw_raw_event()
215 y = y - (udraw->last_two_finger_y in udraw_raw_event()
216 - udraw->last_one_finger_y); in udraw_raw_event()
222 input_report_key(udraw->touch_input_dev, BTN_TOUCH, 1); in udraw_raw_event()
223 input_report_key(udraw->touch_input_dev, BTN_TOOL_FINGER, in udraw_raw_event()
225 input_report_key(udraw->touch_input_dev, BTN_TOOL_DOUBLETAP, in udraw_raw_event()
228 input_report_abs(udraw->touch_input_dev, ABS_X, x); in udraw_raw_event()
229 input_report_abs(udraw->touch_input_dev, ABS_Y, y); in udraw_raw_event()
231 input_report_key(udraw->touch_input_dev, BTN_TOUCH, 0); in udraw_raw_event()
232 input_report_key(udraw->touch_input_dev, BTN_TOOL_FINGER, 0); in udraw_raw_event()
233 input_report_key(udraw->touch_input_dev, BTN_TOOL_DOUBLETAP, 0); in udraw_raw_event()
235 input_sync(udraw->touch_input_dev); in udraw_raw_event()
241 level = clamp(data[13] - PRESSURE_OFFSET, in udraw_raw_event()
244 input_report_key(udraw->pen_input_dev, BTN_TOUCH, (level != 0)); in udraw_raw_event()
245 input_report_key(udraw->pen_input_dev, BTN_TOOL_PEN, 1); in udraw_raw_event()
246 input_report_abs(udraw->pen_input_dev, ABS_PRESSURE, level); in udraw_raw_event()
247 input_report_abs(udraw->pen_input_dev, ABS_X, x); in udraw_raw_event()
248 input_report_abs(udraw->pen_input_dev, ABS_Y, y); in udraw_raw_event()
250 input_report_key(udraw->pen_input_dev, BTN_TOUCH, 0); in udraw_raw_event()
251 input_report_key(udraw->pen_input_dev, BTN_TOOL_PEN, 0); in udraw_raw_event()
252 input_report_abs(udraw->pen_input_dev, ABS_PRESSURE, 0); in udraw_raw_event()
254 input_sync(udraw->pen_input_dev); in udraw_raw_event()
259 y = (data[21] + (data[22] << 8)); in udraw_raw_event()
260 y = clamp_accel(y, AXIS_Y); in udraw_raw_event()
263 input_report_abs(udraw->accel_input_dev, ABS_X, x); in udraw_raw_event()
264 input_report_abs(udraw->accel_input_dev, ABS_Y, y); in udraw_raw_event()
265 input_report_abs(udraw->accel_input_dev, ABS_Z, z); in udraw_raw_event()
266 input_sync(udraw->accel_input_dev); in udraw_raw_event()
276 return hid_hw_open(udraw->hdev); in udraw_open()
283 hid_hw_close(udraw->hdev); in udraw_close()
291 input_dev = devm_input_allocate_device(&hdev->dev); in allocate_and_setup()
295 input_dev->name = name; in allocate_and_setup()
296 input_dev->phys = hdev->phys; in allocate_and_setup()
297 input_dev->dev.parent = &hdev->dev; in allocate_and_setup()
298 input_dev->open = udraw_open; in allocate_and_setup()
299 input_dev->close = udraw_close; in allocate_and_setup()
300 input_dev->uniq = hdev->uniq; in allocate_and_setup()
301 input_dev->id.bustype = hdev->bus; in allocate_and_setup()
302 input_dev->id.vendor = hdev->vendor; in allocate_and_setup()
303 input_dev->id.product = hdev->product; in allocate_and_setup()
304 input_dev->id.version = hdev->version; in allocate_and_setup()
319 input_dev->evbit[0] = BIT(EV_ABS) | BIT(EV_KEY); in udraw_setup_touch()
326 set_bit(BTN_TOUCH, input_dev->keybit); in udraw_setup_touch()
327 set_bit(BTN_TOOL_FINGER, input_dev->keybit); in udraw_setup_touch()
328 set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit); in udraw_setup_touch()
330 set_bit(INPUT_PROP_POINTER, input_dev->propbit); in udraw_setup_touch()
332 udraw->touch_input_dev = input_dev; in udraw_setup_touch()
346 input_dev->evbit[0] = BIT(EV_ABS) | BIT(EV_KEY); in udraw_setup_pen()
355 set_bit(BTN_TOUCH, input_dev->keybit); in udraw_setup_pen()
356 set_bit(BTN_TOOL_PEN, input_dev->keybit); in udraw_setup_pen()
358 set_bit(INPUT_PROP_POINTER, input_dev->propbit); in udraw_setup_pen()
360 udraw->pen_input_dev = input_dev; in udraw_setup_pen()
374 input_dev->evbit[0] = BIT(EV_ABS); in udraw_setup_accel()
377 input_set_abs_params(input_dev, ABS_X, -512, 512, 0, 0); in udraw_setup_accel()
378 input_set_abs_params(input_dev, ABS_Y, -512, 512, 0, 0); in udraw_setup_accel()
379 input_set_abs_params(input_dev, ABS_Z, -512, 512, 0, 0); in udraw_setup_accel()
381 set_bit(INPUT_PROP_ACCELEROMETER, input_dev->propbit); in udraw_setup_accel()
383 udraw->accel_input_dev = input_dev; in udraw_setup_accel()
397 input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS); in udraw_setup_joypad()
399 set_bit(BTN_SOUTH, input_dev->keybit); in udraw_setup_joypad()
400 set_bit(BTN_NORTH, input_dev->keybit); in udraw_setup_joypad()
401 set_bit(BTN_EAST, input_dev->keybit); in udraw_setup_joypad()
402 set_bit(BTN_WEST, input_dev->keybit); in udraw_setup_joypad()
403 set_bit(BTN_SELECT, input_dev->keybit); in udraw_setup_joypad()
404 set_bit(BTN_START, input_dev->keybit); in udraw_setup_joypad()
405 set_bit(BTN_MODE, input_dev->keybit); in udraw_setup_joypad()
407 input_set_abs_params(input_dev, ABS_X, -127, 127, 0, 0); in udraw_setup_joypad()
408 input_set_abs_params(input_dev, ABS_Y, -127, 127, 0, 0); in udraw_setup_joypad()
410 udraw->joy_input_dev = input_dev; in udraw_setup_joypad()
420 udraw = devm_kzalloc(&hdev->dev, sizeof(struct udraw), GFP_KERNEL); in udraw_probe()
422 return -ENOMEM; in udraw_probe()
424 udraw->hdev = hdev; in udraw_probe()
425 udraw->last_two_finger_x = -1; in udraw_probe()
426 udraw->last_two_finger_y = -1; in udraw_probe()
441 return -ENOMEM; in udraw_probe()
444 ret = input_register_device(udraw->joy_input_dev) || in udraw_probe()
445 input_register_device(udraw->touch_input_dev) || in udraw_probe()
446 input_register_device(udraw->pen_input_dev) || in udraw_probe()
447 input_register_device(udraw->accel_input_dev); in udraw_probe()
469 .name = "hid-udraw",