anvil: allow swapping monitors via shortcut
This commit is contained in:
parent
33fb393383
commit
7e75a68e57
|
@ -81,6 +81,17 @@ impl AnvilState {
|
||||||
"err" => format!("{:?}", e)
|
"err" => format!("{:?}", e)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
KeyAction::Screen(num) => {
|
||||||
|
let output_map = self.output_map
|
||||||
|
.as_ref().unwrap();
|
||||||
|
let outputs = output_map.borrow();
|
||||||
|
if let Some(output) = outputs.get(num) {
|
||||||
|
let x = outputs.iter().take(num).fold(0, |acc, output| acc + output.size.0) as f64 + (output.size.0 as f64 / 2.0);
|
||||||
|
let y = output.size.1 as f64 / 2.0;
|
||||||
|
*self.pointer_location.borrow_mut() = (x as f64, y as f64)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
@ -268,6 +279,8 @@ enum KeyAction {
|
||||||
VtSwitch(i32),
|
VtSwitch(i32),
|
||||||
/// run a command
|
/// run a command
|
||||||
Run(String),
|
Run(String),
|
||||||
|
/// Switch the current screen
|
||||||
|
Screen(usize),
|
||||||
/// Forward the key to the client
|
/// Forward the key to the client
|
||||||
Forward,
|
Forward,
|
||||||
/// Do nothing more
|
/// Do nothing more
|
||||||
|
@ -287,6 +300,8 @@ fn process_keyboard_shortcut(modifiers: ModifiersState, keysym: Keysym) -> KeyAc
|
||||||
} else if modifiers.logo && keysym == xkb::KEY_Return {
|
} else if modifiers.logo && keysym == xkb::KEY_Return {
|
||||||
// run terminal
|
// run terminal
|
||||||
KeyAction::Run("weston-terminal".into())
|
KeyAction::Run("weston-terminal".into())
|
||||||
|
} else if modifiers.logo && keysym >= xkb::KEY_1 && keysym <= xkb::KEY_9 {
|
||||||
|
KeyAction::Screen((keysym - xkb::KEY_1) as usize)
|
||||||
} else {
|
} else {
|
||||||
KeyAction::Forward
|
KeyAction::Forward
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue