MCPcopy Create free account
hub / github.com/ading2210/linuxpdf / ps2_write_mouse

Function ps2_write_mouse

tinyemu/ps2.c:334–458  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

332}
333
334void ps2_write_mouse(void *opaque, int val)
335{
336 PS2MouseState *s = (PS2MouseState *)opaque;
337#ifdef DEBUG_MOUSE
338 printf("kbd: write mouse 0x%02x\n", val);
339#endif
340 switch(s->common.write_cmd) {
341 default:
342 case -1:
343 /* mouse command */
344 if (s->mouse_wrap) {
345 if (val == AUX_RESET_WRAP) {
346 s->mouse_wrap = 0;
347 ps2_queue(&s->common, AUX_ACK);
348 return;
349 } else if (val != AUX_RESET) {
350 ps2_queue(&s->common, val);
351 return;
352 }
353 }
354 switch(val) {
355 case AUX_SET_SCALE11:
356 s->mouse_status &= ~MOUSE_STATUS_SCALE21;
357 ps2_queue(&s->common, AUX_ACK);
358 break;
359 case AUX_SET_SCALE21:
360 s->mouse_status |= MOUSE_STATUS_SCALE21;
361 ps2_queue(&s->common, AUX_ACK);
362 break;
363 case AUX_SET_STREAM:
364 s->mouse_status &= ~MOUSE_STATUS_REMOTE;
365 ps2_queue(&s->common, AUX_ACK);
366 break;
367 case AUX_SET_WRAP:
368 s->mouse_wrap = 1;
369 ps2_queue(&s->common, AUX_ACK);
370 break;
371 case AUX_SET_REMOTE:
372 s->mouse_status |= MOUSE_STATUS_REMOTE;
373 ps2_queue(&s->common, AUX_ACK);
374 break;
375 case AUX_GET_TYPE:
376 ps2_queue(&s->common, AUX_ACK);
377 ps2_queue(&s->common, s->mouse_type);
378 break;
379 case AUX_SET_RES:
380 case AUX_SET_SAMPLE:
381 s->common.write_cmd = val;
382 ps2_queue(&s->common, AUX_ACK);
383 break;
384 case AUX_GET_SCALE:
385 ps2_queue(&s->common, AUX_ACK);
386 ps2_queue(&s->common, s->mouse_status);
387 ps2_queue(&s->common, s->mouse_resolution);
388 ps2_queue(&s->common, s->mouse_sample_rate);
389 break;
390 case AUX_POLL:
391 ps2_queue(&s->common, AUX_ACK);

Callers 1

kbd_write_dataFunction · 0.85

Calls 2

ps2_queueFunction · 0.85
ps2_mouse_send_packetFunction · 0.85

Tested by

no test coverage detected