Skip to content

Commit

Permalink
Map right-click to BACK if screen is on
Browse files Browse the repository at this point in the history
Right-click was used to turn the screen on. It did nothing when the
screen was already on.

Instead, in that case, press BACK (like Vysor).

Suggested by: <https://www.reddit.com/r/Android/comments/834zmr/introducing_scrcpy_an_app_to_display_and_control/dvfueft/>
  • Loading branch information
rom1v committed Mar 9, 2018
1 parent 9396ea6 commit 675704c
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 8 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,10 +199,12 @@ To run without installing:
| click on `VOLUME_UP` | `Ctrl`+`+` |
| click on `VOLUME_DOWN` | `Ctrl`+`-` |
| click on `POWER` | `Ctrl`+`p` |
| turn screen on | _Right-click_ |
| turn screen on or press BACK¹ | _Right-click_ |
| paste computer clipboard to device | `Ctrl`+`v` |
| enable/disable FPS counter (on stdout) | `Ctrl`+`i` |

_¹ Press BACK if the screen is already on._


## Why _scrcpy_?

Expand Down
2 changes: 1 addition & 1 deletion app/src/controlevent.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ enum control_event_type {
CONTROL_EVENT_TYPE_COMMAND,
};

#define CONTROL_EVENT_COMMAND_SCREEN_ON 0
#define CONTROL_EVENT_COMMAND_BACK_OR_SCREEN_ON 0

struct control_event {
enum control_event_type type;
Expand Down
7 changes: 4 additions & 3 deletions app/src/inputmanager.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,11 @@ static inline void action_volume_down(struct controller *controller) {
send_keycode(controller, AKEYCODE_VOLUME_DOWN, "VOLUME_DOWN");
}

static void turn_screen_on(struct controller *controller) {
// turn the screen on if it was off, press BACK otherwise
static void press_back_or_turn_screen_on(struct controller *controller) {
struct control_event control_event;
control_event.type = CONTROL_EVENT_TYPE_COMMAND;
control_event.command_event.action = CONTROL_EVENT_COMMAND_SCREEN_ON;
control_event.command_event.action = CONTROL_EVENT_COMMAND_BACK_OR_SCREEN_ON;

if (!controller_push_event(controller, &control_event)) {
LOGW("Cannot turn screen on");
Expand Down Expand Up @@ -226,7 +227,7 @@ void input_manager_process_mouse_motion(struct input_manager *input_manager,
void input_manager_process_mouse_button(struct input_manager *input_manager,
const SDL_MouseButtonEvent *event) {
if (event->button == SDL_BUTTON_RIGHT && event->type == SDL_MOUSEBUTTONDOWN) {
turn_screen_on(input_manager->controller);
press_back_or_turn_screen_on(input_manager->controller);
return;
};
struct control_event control_event;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public final class ControlEvent {
public static final int TYPE_SCROLL = 3;
public static final int TYPE_COMMAND = 4;

public static final int COMMAND_SCREEN_ON = 0;
public static final int COMMAND_BACK_OR_SCREEN_ON = 0;

private int type;
private String text;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,15 @@ private boolean turnScreenOn() {
return device.isScreenOn() || injectKeycode(KeyEvent.KEYCODE_POWER);
}

private boolean pressBackOrTurnScreenOn() {
int keycode = device.isScreenOn() ? KeyEvent.KEYCODE_BACK : KeyEvent.KEYCODE_POWER;
return injectKeycode(keycode);
}

private boolean executeCommand(int action) {
switch (action) {
case ControlEvent.COMMAND_SCREEN_ON:
return turnScreenOn();
case ControlEvent.COMMAND_BACK_OR_SCREEN_ON:
return pressBackOrTurnScreenOn();
default:
Ln.w("Unsupported command: " + action);
}
Expand Down

0 comments on commit 675704c

Please sign in to comment.