import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.tizen.emulator.skin.comm.ICommunicator.KeyEventType;
+import org.tizen.emulator.skin.comm.ICommunicator.MouseButtonType;
import org.tizen.emulator.skin.comm.ICommunicator.MouseEventType;
import org.tizen.emulator.skin.comm.ICommunicator.Scale;
import org.tizen.emulator.skin.comm.ICommunicator.SendCommand;
int[] geometry = SkinUtil.convertMouseGeometry( e.x, e.y, currentLcdWidth, currentLcdHeight,
currentScale, currentAngle );
- MouseEventData mouseEventData = new MouseEventData( eventType,
- e.x, e.y, geometry[0], geometry[1], 0 );
+ MouseEventData mouseEventData = new MouseEventData(
+ MouseButtonType.LEFT.value(), eventType,
+ e.x, e.y, geometry[0], geometry[1], 0);
+
communicator.sendToQEMU( SendCommand.SEND_MOUSE_EVENT, mouseEventData );
}
}
int[] geometry = SkinUtil.convertMouseGeometry( e.x, e.y, currentLcdWidth, currentLcdHeight,
currentScale, currentAngle );
-
logger.info( "mouseUp in LCD" + " x:" + geometry[0] + " y:" + geometry[1] );
- MouseEventData mouseEventData = new MouseEventData( MouseEventType.UP.value(),
- e.x, e.y, geometry[0], geometry[1], 0 );
+
+ MouseEventData mouseEventData = new MouseEventData(
+ MouseButtonType.LEFT.value(), MouseEventType.UP.value(),
+ e.x, e.y, geometry[0], geometry[1], 0);
+
communicator.sendToQEMU( SendCommand.SEND_MOUSE_EVENT, mouseEventData );
if ( true == EmulatorSkin.this.isDragStartedInLCD ) {
EmulatorSkin.this.isDragStartedInLCD = false;
}
+ } else if (2 == e.button) { // wheel button
+ logger.info("wheelUp in LCD");
}
}
int[] geometry = SkinUtil.convertMouseGeometry( e.x, e.y, currentLcdWidth, currentLcdHeight,
currentScale, currentAngle );
-
logger.info( "mouseDown in LCD" + " x:" + geometry[0] + " y:" + geometry[1] );
- MouseEventData mouseEventData = new MouseEventData( MouseEventType.DOWN.value(),
- e.x, e.y, geometry[0], geometry[1], 0 );
+
+ MouseEventData mouseEventData = new MouseEventData(
+ MouseButtonType.LEFT.value(), MouseEventType.DOWN.value(),
+ e.x, e.y, geometry[0], geometry[1], 0);
+
communicator.sendToQEMU( SendCommand.SEND_MOUSE_EVENT, mouseEventData );
if ( false == EmulatorSkin.this.isDragStartedInLCD ) {
EmulatorSkin.this.isDragStartedInLCD = true;
}
}
+ public enum MouseButtonType {
+ LEFT( (short)1 ),
+ WHEEL( (short)2 ),
+ RIGHT( (short)3 );
+
+ private short value;
+ MouseButtonType( short value ) {
+ this.value = value;
+ }
+ public short value() {
+ return this.value;
+ }
+ public static MouseButtonType getValue( String val ) {
+ MouseButtonType[] values = MouseButtonType.values();
+ for (int i = 0; i < values.length; i++) {
+ if( values[i].value == Integer.parseInt( val ) ) {
+ return values[i];
+ }
+ }
+ throw new IllegalArgumentException( val );
+ }
+ public static MouseButtonType getValue( short val ) {
+ MouseButtonType[] values = MouseButtonType.values();
+ for (int i = 0; i < values.length; i++) {
+ if( values[i].value == val ) {
+ return values[i];
+ }
+ }
+ throw new IllegalArgumentException( Integer.toString(val) );
+ }
+
+ }
+
public enum MouseEventType {
DOWN( (short)1 ),
UP( (short)2 ),
DRAG( (short)3 );
-
+
private short value;
MouseEventType( short value ) {
this.value = value;
*/
public class MouseEventData extends AbstractSendData {
+ int mouseButton;
int eventType;
- int originX;
- int originY;
- int x;
- int y;
+ int hostX;
+ int hostY;
+ int guestX;
+ int guestY;
int z;
- public MouseEventData(int eventType, int originX, int originY, int x, int y, int z) {
+ public MouseEventData(int mouseButton, int eventType,
+ int hostX, int hostY, int guestX, int guestY, int z) {
+ this.mouseButton = mouseButton;
this.eventType = eventType;
- this.originX = originX;
- this.originY = originY;
- this.x = x;
- this.y = y;
+ this.hostX = hostX;
+ this.hostY = hostY;
+ this.guestX = guestX;
+ this.guestY = guestY;
this.z = z;
}
@Override
protected void write() throws IOException {
+ writeInt(mouseButton);
writeInt(eventType);
- writeInt(originX);
- writeInt(originY);
- writeInt(x);
- writeInt(y);
+ writeInt(hostX);
+ writeInt(hostY);
+ writeInt(guestX);
+ writeInt(guestY);
writeInt(z);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
- builder.append("MouseEventData [eventType=");
+ builder.append("MouseEventData [mouseButton=");
+ builder.append(mouseButton);
+ builder.append(", eventType=");
builder.append(eventType);
- builder.append(", originX=");
- builder.append(originX);
- builder.append(", originY=");
- builder.append(originY);
- builder.append(", transposeX=");
- builder.append(x);
- builder.append(", transposeY=");
- builder.append(y);
+ builder.append(", hostX=");
+ builder.append(hostX);
+ builder.append(", hostY=");
+ builder.append(hostY);
+ builder.append(", guestX=");
+ builder.append(guestX);
+ builder.append(", guestY=");
+ builder.append(guestY);
builder.append(", id=");
builder.append(z);
builder.append("]");
#include "mloop_event.h"
#include "emul_state.h"
#include "maruskin_keymap.h"
+#include "maruskin_server.h"
#include "emul_state.h"
#include "hw/maru_pm.h"
#include "sysemu.h"
maruskin_init(handle_id, lcd_size_width, lcd_size_height, false);
}
-void do_mouse_event( int event_type, int origin_x, int origin_y, int x, int y, int z )
+void do_mouse_event(int button_type, int event_type,
+ int origin_x, int origin_y, int x, int y, int z)
{
- if ( brightness_off ) {
- TRACE( "reject mouse touch in lcd off : %d, x:%d, y:%d, z:%d\n", event_type, x, y, z );
+ if (brightness_off) {
+ TRACE("reject mouse touch in lcd off = button:%d, type:%d, x:%d, y:%d, z:%d\n",
+ button_type, event_type, x, y, z);
return;
}
- TRACE("mouse_event event_type:%d, origin:(%d, %d), x:%d, y:%d, z:%d\n",
- event_type, origin_x, origin_y, x, y, z);
+ TRACE("mouse_event button:%d, type:%d, host:(%d, %d), x:%d, y:%d, z:%d\n",
+ button_type, event_type, origin_x, origin_y, x, y, z);
#ifndef USE_SHM
/* multi-touch */
void start_display(uint64 handle_id, int lcd_size_width, int lcd_size_height, double scale_factor, short rotation_type);
-void do_mouse_event( int event_type, int origin_x, int origin_y, int x, int y, int z );
+void do_mouse_event(int button_type, int event_type, int origin_x, int origin_y, int x, int y, int z);
void do_key_event( int event_type, int keycode, int key_location );
}
/* keep it consistent with emulator-skin definition */
+ int button_type = 0;
int event_type = 0;
- int origin_x = 0;
- int origin_y = 0;
- int x = 0;
- int y = 0;
+ int host_x = 0;
+ int host_y = 0;
+ int guest_x = 0;
+ int guest_y = 0;
int z = 0;
char* p = recvbuf;
+ memcpy( &button_type, p, sizeof( button_type ) );
+ p += sizeof( button_type );
memcpy( &event_type, p, sizeof( event_type ) );
p += sizeof( event_type );
- memcpy( &origin_x, p, sizeof( origin_x ) );
- p += sizeof( origin_x );
- memcpy( &origin_y, p, sizeof( origin_y ) );
- p += sizeof( origin_y );
- memcpy( &x, p, sizeof( x ) );
- p += sizeof( x );
- memcpy( &y, p, sizeof( y ) );
- p += sizeof( y );
+ memcpy( &host_x, p, sizeof( host_x ) );
+ p += sizeof( host_x );
+ memcpy( &host_y, p, sizeof( host_y ) );
+ p += sizeof( host_y );
+ memcpy( &guest_x, p, sizeof( guest_x ) );
+ p += sizeof( guest_x );
+ memcpy( &guest_y, p, sizeof( guest_y ) );
+ p += sizeof( guest_y );
memcpy( &z, p, sizeof( z ) );
+ button_type = ntohl( button_type );
event_type = ntohl( event_type );
- origin_x = ntohl( origin_x );
- origin_y = ntohl( origin_y );
- x = ntohl( x );
- y = ntohl( y );
+ host_x = ntohl( host_x );
+ host_y = ntohl( host_y );
+ guest_x = ntohl( guest_x );
+ guest_y = ntohl( guest_y );
z = ntohl( z );
- do_mouse_event( event_type, origin_x, origin_y, x, y, z );
+ do_mouse_event(button_type, event_type,
+ host_x, host_y, guest_x, guest_y, z);
break;
}
case RECV_KEY_EVENT: {