54
54
static Atom float_type;
58
Atom prop_tap_time = 0;
59
Atom prop_tap_move = 0;
60
Atom prop_tap_durations = 0;
61
Atom prop_clickpad = 0;
62
Atom prop_tap_fast = 0;
63
Atom prop_middle_timeout = 0;
64
Atom prop_twofinger_pressure = 0;
65
Atom prop_twofinger_width = 0;
66
Atom prop_scrolldist = 0;
67
Atom prop_scrolledge = 0;
68
Atom prop_scrolltwofinger = 0;
70
Atom prop_edgemotion_pressure = 0;
71
Atom prop_edgemotion_speed = 0;
72
Atom prop_edgemotion_always = 0;
73
Atom prop_buttonscroll = 0;
74
Atom prop_buttonscroll_repeat = 0;
75
Atom prop_buttonscroll_time = 0;
77
Atom prop_lockdrags = 0;
78
Atom prop_lockdrags_time = 0;
79
Atom prop_tapaction = 0;
80
Atom prop_clickaction = 0;
81
Atom prop_circscroll = 0;
82
Atom prop_circscroll_dist = 0;
83
Atom prop_circscroll_trigger = 0;
84
Atom prop_circpad = 0;
86
Atom prop_palm_dim = 0;
87
Atom prop_coastspeed = 0;
88
Atom prop_pressuremotion = 0;
58
Atom prop_tap_time = 0;
59
Atom prop_tap_move = 0;
60
Atom prop_tap_durations = 0;
61
Atom prop_clickpad = 0;
62
Atom prop_tap_fast = 0;
63
Atom prop_middle_timeout = 0;
64
Atom prop_twofinger_pressure = 0;
65
Atom prop_twofinger_width = 0;
66
Atom prop_scrolldist = 0;
67
Atom prop_scrolledge = 0;
68
Atom prop_scrolltwofinger = 0;
70
Atom prop_edgemotion_pressure = 0;
71
Atom prop_edgemotion_speed = 0;
72
Atom prop_edgemotion_always = 0;
73
Atom prop_buttonscroll = 0;
74
Atom prop_buttonscroll_repeat = 0;
75
Atom prop_buttonscroll_time = 0;
77
Atom prop_lockdrags = 0;
78
Atom prop_lockdrags_time = 0;
79
Atom prop_tapaction = 0;
80
Atom prop_clickaction = 0;
81
Atom prop_circscroll = 0;
82
Atom prop_circscroll_dist = 0;
83
Atom prop_circscroll_trigger = 0;
84
Atom prop_circpad = 0;
86
Atom prop_palm_dim = 0;
87
Atom prop_coastspeed = 0;
88
Atom prop_pressuremotion = 0;
89
89
Atom prop_pressuremotion_factor = 0;
91
Atom prop_gestures = 0;
92
Atom prop_capabilities = 0;
93
Atom prop_resolution = 0;
95
Atom prop_softbutton_areas = 0;
96
Atom prop_noise_cancellation = 0;
97
Atom prop_product_id = 0;
98
Atom prop_device_node = 0;
91
Atom prop_gestures = 0;
92
Atom prop_capabilities = 0;
93
Atom prop_resolution = 0;
95
Atom prop_softbutton_areas = 0;
96
Atom prop_noise_cancellation = 0;
97
Atom prop_product_id = 0;
98
Atom prop_device_node = 0;
101
101
InitTypedAtom(DeviceIntPtr dev, char *name, Atom type, int format, int nvalues,
201
208
values[2] = para->finger_press;
203
210
prop_finger = InitAtom(pInfo->dev, SYNAPTICS_PROP_FINGER, 32, 3, values);
204
prop_tap_time = InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_TIME, 32, 1, ¶->tap_time);
205
prop_tap_move = InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_MOVE, 32, 1, ¶->tap_move);
212
InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_TIME, 32, 1, ¶->tap_time);
214
InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_MOVE, 32, 1, ¶->tap_move);
207
216
values[0] = para->single_tap_timeout;
208
217
values[1] = para->tap_time_2;
209
218
values[2] = para->click_time;
211
prop_tap_durations = InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_DURATIONS, 32, 3, values);
212
prop_clickpad = InitAtom(pInfo->dev, SYNAPTICS_PROP_CLICKPAD, 8, 1,
214
prop_tap_fast = InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_FAST, 8, 1, ¶->fast_taps);
215
prop_middle_timeout = InitAtom(pInfo->dev, SYNAPTICS_PROP_MIDDLE_TIMEOUT,
216
32, 1, ¶->emulate_mid_button_time);
217
prop_twofinger_pressure = InitAtom(pInfo->dev, SYNAPTICS_PROP_TWOFINGER_PRESSURE,
218
32, 1, ¶->emulate_twofinger_z);
219
prop_twofinger_width = InitAtom(pInfo->dev, SYNAPTICS_PROP_TWOFINGER_WIDTH,
220
32, 1, ¶->emulate_twofinger_w);
221
InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_DURATIONS, 32, 3, values);
223
InitAtom(pInfo->dev, SYNAPTICS_PROP_CLICKPAD, 8, 1, ¶->clickpad);
225
InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_FAST, 8, 1, ¶->fast_taps);
226
prop_middle_timeout =
227
InitAtom(pInfo->dev, SYNAPTICS_PROP_MIDDLE_TIMEOUT, 32, 1,
228
¶->emulate_mid_button_time);
229
prop_twofinger_pressure =
230
InitAtom(pInfo->dev, SYNAPTICS_PROP_TWOFINGER_PRESSURE, 32, 1,
231
¶->emulate_twofinger_z);
232
prop_twofinger_width =
233
InitAtom(pInfo->dev, SYNAPTICS_PROP_TWOFINGER_WIDTH, 32, 1,
234
¶->emulate_twofinger_w);
222
236
values[0] = para->scroll_dist_vert;
223
237
values[1] = para->scroll_dist_horiz;
224
prop_scrolldist = InitAtom(pInfo->dev, SYNAPTICS_PROP_SCROLL_DISTANCE, 32, 2, values);
239
InitAtom(pInfo->dev, SYNAPTICS_PROP_SCROLL_DISTANCE, 32, 2, values);
226
241
values[0] = para->scroll_edge_vert;
227
242
values[1] = para->scroll_edge_horiz;
228
243
values[2] = para->scroll_edge_corner;
229
prop_scrolledge = InitAtom(pInfo->dev, SYNAPTICS_PROP_SCROLL_EDGE,8, 3, values);
245
InitAtom(pInfo->dev, SYNAPTICS_PROP_SCROLL_EDGE, 8, 3, values);
230
246
values[0] = para->scroll_twofinger_vert;
231
247
values[1] = para->scroll_twofinger_horiz;
232
prop_scrolltwofinger = InitAtom(pInfo->dev, SYNAPTICS_PROP_SCROLL_TWOFINGER,8, 2, values);
248
prop_scrolltwofinger =
249
InitAtom(pInfo->dev, SYNAPTICS_PROP_SCROLL_TWOFINGER, 8, 2, values);
234
251
fvalues[0] = para->min_speed;
235
252
fvalues[1] = para->max_speed;
240
257
values[0] = para->edge_motion_min_z;
241
258
values[1] = para->edge_motion_max_z;
242
prop_edgemotion_pressure = InitAtom(pInfo->dev, SYNAPTICS_PROP_EDGEMOTION_PRESSURE, 32, 2, values);
259
prop_edgemotion_pressure =
260
InitAtom(pInfo->dev, SYNAPTICS_PROP_EDGEMOTION_PRESSURE, 32, 2, values);
244
262
values[0] = para->edge_motion_min_speed;
245
263
values[1] = para->edge_motion_max_speed;
246
prop_edgemotion_speed = InitAtom(pInfo->dev, SYNAPTICS_PROP_EDGEMOTION_SPEED, 32, 2, values);
247
prop_edgemotion_always = InitAtom(pInfo->dev, SYNAPTICS_PROP_EDGEMOTION, 8, 1, ¶->edge_motion_use_always);
264
prop_edgemotion_speed =
265
InitAtom(pInfo->dev, SYNAPTICS_PROP_EDGEMOTION_SPEED, 32, 2, values);
266
prop_edgemotion_always =
267
InitAtom(pInfo->dev, SYNAPTICS_PROP_EDGEMOTION, 8, 1,
268
¶->edge_motion_use_always);
249
if (priv->has_scrollbuttons)
270
if (priv->has_scrollbuttons) {
251
271
values[0] = para->updown_button_scrolling;
252
272
values[1] = para->leftright_button_scrolling;
253
prop_buttonscroll = InitAtom(pInfo->dev, SYNAPTICS_PROP_BUTTONSCROLLING, 8, 2, values);
274
InitAtom(pInfo->dev, SYNAPTICS_PROP_BUTTONSCROLLING, 8, 2, values);
255
276
values[0] = para->updown_button_repeat;
256
277
values[1] = para->leftright_button_repeat;
257
prop_buttonscroll_repeat = InitAtom(pInfo->dev, SYNAPTICS_PROP_BUTTONSCROLLING_REPEAT, 8, 2, values);
258
prop_buttonscroll_time = InitAtom(pInfo->dev, SYNAPTICS_PROP_BUTTONSCROLLING_TIME, 32, 1, ¶->scroll_button_repeat);
278
prop_buttonscroll_repeat =
279
InitAtom(pInfo->dev, SYNAPTICS_PROP_BUTTONSCROLLING_REPEAT, 8, 2,
281
prop_buttonscroll_time =
282
InitAtom(pInfo->dev, SYNAPTICS_PROP_BUTTONSCROLLING_TIME, 32, 1,
283
¶->scroll_button_repeat);
261
prop_off = InitAtom(pInfo->dev, SYNAPTICS_PROP_OFF, 8, 1, ¶->touchpad_off);
262
prop_lockdrags = InitAtom(pInfo->dev, SYNAPTICS_PROP_LOCKED_DRAGS, 8, 1, ¶->locked_drags);
263
prop_lockdrags_time = InitAtom(pInfo->dev, SYNAPTICS_PROP_LOCKED_DRAGS_TIMEOUT, 32, 1, ¶->locked_drag_time);
287
InitAtom(pInfo->dev, SYNAPTICS_PROP_OFF, 8, 1, ¶->touchpad_off);
289
InitAtom(pInfo->dev, SYNAPTICS_PROP_LOCKED_DRAGS, 8, 1,
290
¶->locked_drags);
291
prop_lockdrags_time =
292
InitAtom(pInfo->dev, SYNAPTICS_PROP_LOCKED_DRAGS_TIMEOUT, 32, 1,
293
¶->locked_drag_time);
265
295
memcpy(values, para->tap_action, MAX_TAP * sizeof(int));
266
prop_tapaction = InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_ACTION, 8, MAX_TAP, values);
297
InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_ACTION, 8, MAX_TAP, values);
268
299
memcpy(values, para->click_action, MAX_CLICK * sizeof(int));
269
prop_clickaction = InitAtom(pInfo->dev, SYNAPTICS_PROP_CLICK_ACTION, 8, MAX_CLICK, values);
301
InitAtom(pInfo->dev, SYNAPTICS_PROP_CLICK_ACTION, 8, MAX_CLICK, values);
271
prop_circscroll = InitAtom(pInfo->dev, SYNAPTICS_PROP_CIRCULAR_SCROLLING, 8, 1, ¶->circular_scrolling);
304
InitAtom(pInfo->dev, SYNAPTICS_PROP_CIRCULAR_SCROLLING, 8, 1,
305
¶->circular_scrolling);
273
307
fvalues[0] = para->scroll_dist_circ;
274
prop_circscroll_dist = InitFloatAtom(pInfo->dev, SYNAPTICS_PROP_CIRCULAR_SCROLLING_DIST, 1, fvalues);
308
prop_circscroll_dist =
309
InitFloatAtom(pInfo->dev, SYNAPTICS_PROP_CIRCULAR_SCROLLING_DIST, 1,
276
prop_circscroll_trigger = InitAtom(pInfo->dev, SYNAPTICS_PROP_CIRCULAR_SCROLLING_TRIGGER, 8, 1, ¶->circular_trigger);
277
prop_circpad = InitAtom(pInfo->dev, SYNAPTICS_PROP_CIRCULAR_PAD, 8, 1, ¶->circular_pad);
278
prop_palm = InitAtom(pInfo->dev, SYNAPTICS_PROP_PALM_DETECT, 8, 1, ¶->palm_detect);
312
prop_circscroll_trigger =
313
InitAtom(pInfo->dev, SYNAPTICS_PROP_CIRCULAR_SCROLLING_TRIGGER, 8, 1,
314
¶->circular_trigger);
316
InitAtom(pInfo->dev, SYNAPTICS_PROP_CIRCULAR_PAD, 8, 1,
317
¶->circular_pad);
319
InitAtom(pInfo->dev, SYNAPTICS_PROP_PALM_DETECT, 8, 1,
280
322
values[0] = para->palm_min_width;
281
323
values[1] = para->palm_min_z;
283
prop_palm_dim = InitAtom(pInfo->dev, SYNAPTICS_PROP_PALM_DIMENSIONS, 32, 2, values);
326
InitAtom(pInfo->dev, SYNAPTICS_PROP_PALM_DIMENSIONS, 32, 2, values);
285
328
fvalues[0] = para->coasting_speed;
286
329
fvalues[1] = para->coasting_friction;
287
prop_coastspeed = InitFloatAtom(pInfo->dev, SYNAPTICS_PROP_COASTING_SPEED, 2, fvalues);
331
InitFloatAtom(pInfo->dev, SYNAPTICS_PROP_COASTING_SPEED, 2, fvalues);
289
333
values[0] = para->press_motion_min_z;
290
334
values[1] = para->press_motion_max_z;
291
prop_pressuremotion = InitTypedAtom(pInfo->dev, SYNAPTICS_PROP_PRESSURE_MOTION, XA_CARDINAL, 32, 2, values);
335
prop_pressuremotion =
336
InitTypedAtom(pInfo->dev, SYNAPTICS_PROP_PRESSURE_MOTION, XA_CARDINAL,
293
339
fvalues[0] = para->press_motion_min_factor;
294
340
fvalues[1] = para->press_motion_max_factor;
296
prop_pressuremotion_factor = InitFloatAtom(pInfo->dev, SYNAPTICS_PROP_PRESSURE_MOTION_FACTOR, 2, fvalues);
342
prop_pressuremotion_factor =
343
InitFloatAtom(pInfo->dev, SYNAPTICS_PROP_PRESSURE_MOTION_FACTOR, 2,
298
prop_grab = InitAtom(pInfo->dev, SYNAPTICS_PROP_GRAB, 8, 1, ¶->grab_event_device);
347
InitAtom(pInfo->dev, SYNAPTICS_PROP_GRAB, 8, 1,
348
¶->grab_event_device);
300
350
values[0] = para->tap_and_drag_gesture;
301
351
prop_gestures = InitAtom(pInfo->dev, SYNAPTICS_PROP_GESTURES, 8, 1, values);
358
411
/* If checkonly is set, no parameters may be changed. So just let the code
359
412
* change temporary variables and forget about it. */
366
if (property == prop_edges)
418
if (property == prop_edges) {
369
421
if (prop->size != 4 || prop->format != 32 || prop->type != XA_INTEGER)
372
edges = (INT32*)prop->data;
424
edges = (INT32 *) prop->data;
373
425
if (edges[0] > edges[1] || edges[2] > edges[3])
376
para->left_edge = edges[0];
377
para->right_edge = edges[1];
378
para->top_edge = edges[2];
428
para->left_edge = edges[0];
429
para->right_edge = edges[1];
430
para->top_edge = edges[2];
379
431
para->bottom_edge = edges[3];
381
} else if (property == prop_finger)
434
else if (property == prop_finger) {
384
437
if (prop->size != 3 || prop->format != 32 || prop->type != XA_INTEGER)
387
finger = (INT32*)prop->data;
440
finger = (INT32 *) prop->data;
388
441
if (finger[0] > finger[1])
391
para->finger_low = finger[0];
392
para->finger_high = finger[1];
444
para->finger_low = finger[0];
445
para->finger_high = finger[1];
393
446
para->finger_press = finger[2];
395
} else if (property == prop_tap_time)
397
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
400
para->tap_time = *(INT32*)prop->data;
402
} else if (property == prop_tap_move)
404
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
407
para->tap_move = *(INT32*)prop->data;
408
} else if (property == prop_tap_durations)
449
else if (property == prop_tap_time) {
450
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
453
para->tap_time = *(INT32 *) prop->data;
456
else if (property == prop_tap_move) {
457
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
460
para->tap_move = *(INT32 *) prop->data;
462
else if (property == prop_tap_durations) {
412
465
if (prop->size != 3 || prop->format != 32 || prop->type != XA_INTEGER)
415
timeouts = (INT32*)prop->data;
468
timeouts = (INT32 *) prop->data;
417
470
para->single_tap_timeout = timeouts[0];
418
para->tap_time_2 = timeouts[1];
419
para->click_time = timeouts[2];
420
} else if (property == prop_clickpad) {
471
para->tap_time_2 = timeouts[1];
472
para->click_time = timeouts[2];
474
else if (property == prop_clickpad) {
423
477
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
426
value = *(BOOL*)prop->data;
480
value = *(BOOL *) prop->data;
427
481
if (!para->clickpad && value && !prop_softbutton_areas)
428
482
InitSoftButtonProperty(pInfo);
429
else if (para->clickpad && !value && prop_softbutton_areas)
483
else if (para->clickpad && !value && prop_softbutton_areas) {
431
484
XIDeleteDeviceProperty(dev, prop_softbutton_areas, FALSE);
432
485
prop_softbutton_areas = 0;
435
para->clickpad = *(BOOL*)prop->data;
436
} else if (property == prop_tap_fast)
488
para->clickpad = *(BOOL *) prop->data;
490
else if (property == prop_tap_fast) {
438
491
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
441
para->fast_taps = *(BOOL*)prop->data;
443
} else if (property == prop_middle_timeout)
445
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
448
para->emulate_mid_button_time = *(INT32*)prop->data;
449
} else if (property == prop_twofinger_pressure)
451
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
454
para->emulate_twofinger_z = *(INT32*)prop->data;
455
} else if (property == prop_twofinger_width)
457
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
460
para->emulate_twofinger_w = *(INT32*)prop->data;
461
} else if (property == prop_scrolldist)
494
para->fast_taps = *(BOOL *) prop->data;
497
else if (property == prop_middle_timeout) {
498
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
501
para->emulate_mid_button_time = *(INT32 *) prop->data;
503
else if (property == prop_twofinger_pressure) {
504
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
507
para->emulate_twofinger_z = *(INT32 *) prop->data;
509
else if (property == prop_twofinger_width) {
510
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
513
para->emulate_twofinger_w = *(INT32 *) prop->data;
515
else if (property == prop_scrolldist) {
464
518
if (prop->size != 2 || prop->format != 32 || prop->type != XA_INTEGER)
467
dist = (INT32*)prop->data;
468
if (para->scroll_dist_vert != dist[0])
521
dist = (INT32 *) prop->data;
522
if (para->scroll_dist_vert != dist[0]) {
470
523
para->scroll_dist_vert = dist[0];
471
524
#ifdef HAVE_SMOOTH_SCROLL
472
525
SetScrollValuator(dev, priv->scroll_axis_vert, SCROLL_TYPE_VERTICAL,
473
526
para->scroll_dist_vert, 0);
476
if (para->scroll_dist_horiz != dist[1])
529
if (para->scroll_dist_horiz != dist[1]) {
478
530
para->scroll_dist_horiz = dist[1];
479
531
#ifdef HAVE_SMOOTH_SCROLL
480
SetScrollValuator(dev, priv->scroll_axis_horiz, SCROLL_TYPE_HORIZONTAL,
481
para->scroll_dist_horiz, 0);
532
SetScrollValuator(dev, priv->scroll_axis_horiz,
533
SCROLL_TYPE_HORIZONTAL, para->scroll_dist_horiz,
484
} else if (property == prop_scrolledge)
538
else if (property == prop_scrolledge) {
487
541
if (prop->size != 3 || prop->format != 8 || prop->type != XA_INTEGER)
490
edge = (BOOL*)prop->data;
491
para->scroll_edge_vert = edge[0];
492
para->scroll_edge_horiz = edge[1];
544
edge = (BOOL *) prop->data;
545
para->scroll_edge_vert = edge[0];
546
para->scroll_edge_horiz = edge[1];
493
547
para->scroll_edge_corner = edge[2];
494
} else if (property == prop_scrolltwofinger)
549
else if (property == prop_scrolltwofinger) {
496
550
CARD8 *twofinger;
498
552
if (prop->size != 2 || prop->format != 8 || prop->type != XA_INTEGER)
501
twofinger = (BOOL*)prop->data;
502
para->scroll_twofinger_vert = twofinger[0];
555
twofinger = (BOOL *) prop->data;
556
para->scroll_twofinger_vert = twofinger[0];
503
557
para->scroll_twofinger_horiz = twofinger[1];
504
} else if (property == prop_speed)
559
else if (property == prop_speed) {
508
562
if (prop->size != 4 || prop->format != 32 || prop->type != float_type)
511
speed = (float*)prop->data;
565
speed = (float *) prop->data;
512
566
para->min_speed = speed[0];
513
567
para->max_speed = speed[1];
514
568
para->accl = speed[2];
515
569
para->trackstick_speed = speed[3];
517
} else if (property == prop_edgemotion_pressure)
572
else if (property == prop_edgemotion_pressure) {
519
573
CARD32 *pressure;
521
575
if (prop->size != 2 || prop->format != 32 || prop->type != XA_INTEGER)
524
pressure = (CARD32*)prop->data;
578
pressure = (CARD32 *) prop->data;
525
579
if (pressure[0] > pressure[1])
528
582
para->edge_motion_min_z = pressure[0];
529
583
para->edge_motion_max_z = pressure[1];
531
} else if (property == prop_edgemotion_speed)
586
else if (property == prop_edgemotion_speed) {
535
589
if (prop->size != 2 || prop->format != 32 || prop->type != XA_INTEGER)
538
speed = (CARD32*)prop->data;
592
speed = (CARD32 *) prop->data;
539
593
if (speed[0] > speed[1])
542
596
para->edge_motion_min_speed = speed[0];
543
597
para->edge_motion_max_speed = speed[1];
545
} else if (property == prop_edgemotion_always)
600
else if (property == prop_edgemotion_always) {
547
601
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
550
para->edge_motion_use_always = *(BOOL*)prop->data;
604
para->edge_motion_use_always = *(BOOL *) prop->data;
552
} else if (property == prop_buttonscroll)
607
else if (property == prop_buttonscroll) {
556
610
if (!priv->has_scrollbuttons)
573
627
if (prop->size != 2 || prop->format != 8 || prop->type != XA_INTEGER)
576
repeat = (BOOL*)prop->data;
577
para->updown_button_repeat = repeat[0];
630
repeat = (BOOL *) prop->data;
631
para->updown_button_repeat = repeat[0];
578
632
para->leftright_button_repeat = repeat[1];
579
} else if (property == prop_buttonscroll_time)
634
else if (property == prop_buttonscroll_time) {
581
635
if (!priv->has_scrollbuttons)
584
638
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
587
para->scroll_button_repeat = *(INT32*)prop->data;
641
para->scroll_button_repeat = *(INT32 *) prop->data;
589
} else if (property == prop_off)
644
else if (property == prop_off) {
592
647
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
595
off = *(CARD8*)prop->data;
650
off = *(CARD8 *) prop->data;
600
655
para->touchpad_off = off;
601
} else if (property == prop_gestures)
657
else if (property == prop_gestures) {
605
660
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
608
gestures = (BOOL*)prop->data;
663
gestures = (BOOL *) prop->data;
609
664
para->tap_and_drag_gesture = gestures[0];
610
} else if (property == prop_lockdrags)
666
else if (property == prop_lockdrags) {
612
667
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
615
para->locked_drags = *(BOOL*)prop->data;
616
} else if (property == prop_lockdrags_time)
670
para->locked_drags = *(BOOL *) prop->data;
672
else if (property == prop_lockdrags_time) {
618
673
if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
621
para->locked_drag_time = *(INT32*)prop->data;
622
} else if (property == prop_tapaction)
676
para->locked_drag_time = *(INT32 *) prop->data;
678
else if (property == prop_tapaction) {
627
if (prop->size > MAX_TAP || prop->format != 8 || prop->type != XA_INTEGER)
682
if (prop->size > MAX_TAP || prop->format != 8 ||
683
prop->type != XA_INTEGER)
630
action = (CARD8*)prop->data;
686
action = (CARD8 *) prop->data;
632
688
for (i = 0; i < MAX_TAP; i++)
633
689
para->tap_action[i] = action[i];
634
} else if (property == prop_clickaction)
691
else if (property == prop_clickaction) {
639
if (prop->size > MAX_CLICK || prop->format != 8 || prop->type != XA_INTEGER)
695
if (prop->size > MAX_CLICK || prop->format != 8 ||
696
prop->type != XA_INTEGER)
642
action = (CARD8*)prop->data;
699
action = (CARD8 *) prop->data;
644
701
for (i = 0; i < MAX_CLICK; i++)
645
702
para->click_action[i] = action[i];
646
} else if (property == prop_circscroll)
704
else if (property == prop_circscroll) {
648
705
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
651
para->circular_scrolling = *(BOOL*)prop->data;
708
para->circular_scrolling = *(BOOL *) prop->data;
653
} else if (property == prop_circscroll_dist)
711
else if (property == prop_circscroll_dist) {
657
714
if (prop->size != 1 || prop->format != 32 || prop->type != float_type)
660
circdist = *(float*)prop->data;
717
circdist = *(float *) prop->data;
661
718
para->scroll_dist_circ = circdist;
662
} else if (property == prop_circscroll_trigger)
720
else if (property == prop_circscroll_trigger) {
665
723
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
668
trigger = *(CARD8*)prop->data;
726
trigger = *(CARD8 *) prop->data;
672
730
para->circular_trigger = trigger;
674
} else if (property == prop_circpad)
676
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
679
para->circular_pad = *(BOOL*)prop->data;
680
} else if (property == prop_palm)
682
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
685
para->palm_detect = *(BOOL*)prop->data;
686
} else if (property == prop_palm_dim)
733
else if (property == prop_circpad) {
734
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
737
para->circular_pad = *(BOOL *) prop->data;
739
else if (property == prop_palm) {
740
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
743
para->palm_detect = *(BOOL *) prop->data;
745
else if (property == prop_palm_dim) {
690
748
if (prop->size != 2 || prop->format != 32 || prop->type != XA_INTEGER)
693
dim = (INT32*)prop->data;
751
dim = (INT32 *) prop->data;
695
753
para->palm_min_width = dim[0];
696
para->palm_min_z = dim[1];
697
} else if (property == prop_coastspeed)
754
para->palm_min_z = dim[1];
756
else if (property == prop_coastspeed) {
699
757
float *coast_speeds;
701
759
if (prop->size != 2 || prop->format != 32 || prop->type != float_type)
704
coast_speeds = (float*)prop->data;
762
coast_speeds = (float *) prop->data;
705
763
para->coasting_speed = coast_speeds[0];
706
764
para->coasting_friction = coast_speeds[1];
707
} else if (property == prop_pressuremotion)
766
else if (property == prop_pressuremotion) {
710
769
if (prop->size != 2 || prop->format != 32 || prop->type != XA_CARDINAL)
713
press = (CARD32*)prop->data;
772
press = (CARD32 *) prop->data;
714
773
if (press[0] > press[1])
717
776
para->press_motion_min_z = press[0];
718
777
para->press_motion_max_z = press[1];
719
} else if (property == prop_grab)
779
else if (property == prop_grab) {
721
780
if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
724
para->grab_event_device = *(BOOL*)prop->data;
725
} else if (property == prop_capabilities)
729
} else if (property == prop_resolution)
733
} else if (property == prop_area)
783
para->grab_event_device = *(BOOL *) prop->data;
785
else if (property == prop_capabilities) {
789
else if (property == prop_resolution) {
793
else if (property == prop_area) {
736
796
if (prop->size != 4 || prop->format != 32 || prop->type != XA_INTEGER)
739
area = (INT32*)prop->data;
740
if ((((area[0] != 0) && (area[1] != 0)) && (area[0] > area[1]) ) || (((area[2] != 0) && (area[3] != 0)) && (area[2] > area[3])))
799
area = (INT32 *) prop->data;
800
if ((((area[0] != 0) && (area[1] != 0)) && (area[0] > area[1])) ||
801
(((area[2] != 0) && (area[3] != 0)) && (area[2] > area[3])))
743
para->area_left_edge = area[0];
744
para->area_right_edge = area[1];
745
para->area_top_edge = area[2];
804
para->area_left_edge = area[0];
805
para->area_right_edge = area[1];
806
para->area_top_edge = area[2];
746
807
para->area_bottom_edge = area[3];
747
} else if (property == prop_softbutton_areas)
809
else if (property == prop_softbutton_areas) {
751
812
if (prop->size != 8 || prop->format != 32 || prop->type != XA_INTEGER)
754
areas = (int*)prop->data;
815
areas = (int *) prop->data;
755
816
if (!SynapticsIsSoftButtonAreasValid(areas))
758
819
memcpy(para->softbutton_areas[0], areas, 4 * sizeof(int));
759
820
memcpy(para->softbutton_areas[1], areas + 4, 4 * sizeof(int));
760
} else if (property == prop_noise_cancellation) {
822
else if (property == prop_noise_cancellation) {
762
825
if (prop->size != 2 || prop->format != 32 || prop->type != XA_INTEGER)
765
hyst = (INT32*)prop->data;
828
hyst = (INT32 *) prop->data;
766
829
if (hyst[0] < 0 || hyst[1] < 0)
768
831
para->hyst_x = hyst[0];
769
832
para->hyst_y = hyst[1];
770
} else if (property == prop_product_id || property == prop_device_node)
771
return BadValue; /* read-only */
834
else if (property == prop_product_id || property == prop_device_node)
835
return BadValue; /* read-only */