1 package com.genymobile.scrcpy;
2 
3 /**
4  * Union of all supported event types, identified by their {@code type}.
5  */
6 public final class ControlMessage {
7 
8     public static final int TYPE_INJECT_KEYCODE = 0;
9     public static final int TYPE_INJECT_TEXT = 1;
10     public static final int TYPE_INJECT_MOUSE_EVENT = 2;
11     public static final int TYPE_INJECT_SCROLL_EVENT = 3;
12     public static final int TYPE_BACK_OR_SCREEN_ON = 4;
13     public static final int TYPE_EXPAND_NOTIFICATION_PANEL = 5;
14     public static final int TYPE_COLLAPSE_NOTIFICATION_PANEL = 6;
15     public static final int TYPE_GET_CLIPBOARD = 7;
16     public static final int TYPE_SET_CLIPBOARD = 8;
17     public static final int TYPE_SET_SCREEN_POWER_MODE = 9;
18 
19     private int type;
20     private String text;
21     private int metaState; // KeyEvent.META_*
22     private int action; // KeyEvent.ACTION_* or MotionEvent.ACTION_* or POWER_MODE_*
23     private int keycode; // KeyEvent.KEYCODE_*
24     private int buttons; // MotionEvent.BUTTON_*
25     private Position position;
26     private int hScroll;
27     private int vScroll;
28 
ControlMessage()29     private ControlMessage() {
30     }
31 
createInjectKeycode(int action, int keycode, int metaState)32     public static ControlMessage createInjectKeycode(int action, int keycode, int metaState) {
33         ControlMessage event = new ControlMessage();
34         event.type = TYPE_INJECT_KEYCODE;
35         event.action = action;
36         event.keycode = keycode;
37         event.metaState = metaState;
38         return event;
39     }
40 
createInjectText(String text)41     public static ControlMessage createInjectText(String text) {
42         ControlMessage event = new ControlMessage();
43         event.type = TYPE_INJECT_TEXT;
44         event.text = text;
45         return event;
46     }
47 
createInjectMouseEvent(int action, int buttons, Position position)48     public static ControlMessage createInjectMouseEvent(int action, int buttons, Position position) {
49         ControlMessage event = new ControlMessage();
50         event.type = TYPE_INJECT_MOUSE_EVENT;
51         event.action = action;
52         event.buttons = buttons;
53         event.position = position;
54         return event;
55     }
56 
createInjectScrollEvent(Position position, int hScroll, int vScroll)57     public static ControlMessage createInjectScrollEvent(Position position, int hScroll, int vScroll) {
58         ControlMessage event = new ControlMessage();
59         event.type = TYPE_INJECT_SCROLL_EVENT;
60         event.position = position;
61         event.hScroll = hScroll;
62         event.vScroll = vScroll;
63         return event;
64     }
65 
createSetClipboard(String text)66     public static ControlMessage createSetClipboard(String text) {
67         ControlMessage event = new ControlMessage();
68         event.type = TYPE_SET_CLIPBOARD;
69         event.text = text;
70         return event;
71     }
72 
73     /**
74      * @param mode one of the {@code Device.SCREEN_POWER_MODE_*} constants
75      */
createSetScreenPowerMode(int mode)76     public static ControlMessage createSetScreenPowerMode(int mode) {
77         ControlMessage event = new ControlMessage();
78         event.type = TYPE_SET_SCREEN_POWER_MODE;
79         event.action = mode;
80         return event;
81     }
82 
createEmpty(int type)83     public static ControlMessage createEmpty(int type) {
84         ControlMessage event = new ControlMessage();
85         event.type = type;
86         return event;
87     }
88 
getType()89     public int getType() {
90         return type;
91     }
92 
getText()93     public String getText() {
94         return text;
95     }
96 
getMetaState()97     public int getMetaState() {
98         return metaState;
99     }
100 
getAction()101     public int getAction() {
102         return action;
103     }
104 
getKeycode()105     public int getKeycode() {
106         return keycode;
107     }
108 
getButtons()109     public int getButtons() {
110         return buttons;
111     }
112 
getPosition()113     public Position getPosition() {
114         return position;
115     }
116 
getHScroll()117     public int getHScroll() {
118         return hScroll;
119     }
120 
getVScroll()121     public int getVScroll() {
122         return vScroll;
123     }
124 }
125