Skip to content

Commit a429798

Browse files
authored
refactor: use winit keyboard types (#357)
This makes it easier to use `layershellev` with other crates like `blitz`. Fixes #356.
1 parent a4bf018 commit a429798

File tree

14 files changed

+111
-3047
lines changed

14 files changed

+111
-3047
lines changed

Cargo.lock

Lines changed: 66 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,14 @@ iced_devtools = "0.14"
7878
iced_widget = "0.14"
7979
window_clipboard = "0.5.0"
8080

81-
bitflags = "2.11.0"
8281
log = "0.4.22"
8382
enumflags2 = "0.7.11"
8483

8584
xkbcommon-dl = "0.4.2"
8685
smol_str = "0.2.2" #NOTE: follow iced
8786
memmap2 = "0.9.5"
87+
winit-common = { version = "0.31.0-beta.2", features = ["xkb", "wayland"] }
88+
winit-core = "0.31.0-beta.2" # Has some important types
8889

8990
tracing = "0.1.40"
9091
futures = "0.3.31"

iced_layershell/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ window_clipboard.workspace = true
3636
log.workspace = true
3737
futures.workspace = true
3838
enumflags2.workspace = true
39+
smol_str.workspace = true
3940

4041
# workspace features cannot be optional so we need to define the dependency here
4142
mundy = { version = "0.2.0", optional = true }

iced_layershell/src/conversion.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,10 @@ pub fn window_event(
5656
}))
5757
}
5858
LayerShellEvent::KeyBoardInput { event, .. } => Some(IcedEvent::Keyboard({
59-
let key = event.key_without_modifiers();
59+
let key = event.key_without_modifiers.clone();
6060
let text = event
61-
.text_with_all_modifiers()
61+
.text_with_all_modifiers
62+
.clone()
6263
.map(SmolStr::new)
6364
.filter(|text| !text.as_str().chars().any(is_private_use));
6465
let LayerShellKeyEvent {

iced_layershell/src/conversion/keymap.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ pub fn key(key: layershellev::keyboard::Key) -> iced_core::keyboard::Key {
99
use layershellev::keyboard::NamedKey;
1010

1111
match key {
12-
layershellev::keyboard::Key::Character(c) => keyboard::Key::Character(c),
12+
layershellev::keyboard::Key::Character(c) if c == " " => keyboard::Key::Named(Named::Space),
13+
layershellev::keyboard::Key::Character(c) => {
14+
keyboard::Key::Character(smol_str::SmolStr::from(c.to_string()))
15+
}
16+
// Hyper and Super are deprecated
17+
#[allow(deprecated)]
1318
layershellev::keyboard::Key::Named(named_key) => keyboard::Key::Named(match named_key {
1419
NamedKey::Alt => Named::Alt,
1520
NamedKey::AltGraph => Named::AltGraph,
@@ -27,7 +32,6 @@ pub fn key(key: layershellev::keyboard::Key) -> iced_core::keyboard::Key {
2732
NamedKey::Super => Named::Super,
2833
NamedKey::Enter => Named::Enter,
2934
NamedKey::Tab => Named::Tab,
30-
NamedKey::Space => Named::Space,
3135
NamedKey::ArrowDown => Named::ArrowDown,
3236
NamedKey::ArrowLeft => Named::ArrowLeft,
3337
NamedKey::ArrowRight => Named::ArrowRight,
@@ -330,7 +334,7 @@ pub fn modifiers(modifiers: ModifiersState) -> iced_core::keyboard::Modifiers {
330334
result.set(keyboard::Modifiers::SHIFT, modifiers.shift_key());
331335
result.set(keyboard::Modifiers::CTRL, modifiers.control_key());
332336
result.set(keyboard::Modifiers::ALT, modifiers.alt_key());
333-
result.set(keyboard::Modifiers::LOGO, modifiers.super_key());
337+
result.set(keyboard::Modifiers::LOGO, modifiers.meta_key());
334338

335339
result
336340
}
@@ -359,6 +363,8 @@ use iced_core::keyboard;
359363
pub fn key_code(key_code: layershellev::keyboard::KeyCode) -> Option<keyboard::key::Code> {
360364
use layershellev::keyboard::KeyCode;
361365

366+
// Hyper and Turbo are deprecated
367+
#[allow(deprecated)]
362368
Some(match key_code {
363369
KeyCode::Backquote => keyboard::key::Code::Backquote,
364370
KeyCode::Backslash => keyboard::key::Code::Backslash,
@@ -418,8 +424,8 @@ pub fn key_code(key_code: layershellev::keyboard::KeyCode) -> Option<keyboard::k
418424
KeyCode::ControlLeft => keyboard::key::Code::ControlLeft,
419425
KeyCode::ControlRight => keyboard::key::Code::ControlRight,
420426
KeyCode::Enter => keyboard::key::Code::Enter,
421-
KeyCode::SuperLeft => keyboard::key::Code::SuperLeft,
422-
KeyCode::SuperRight => keyboard::key::Code::SuperRight,
427+
KeyCode::MetaLeft => keyboard::key::Code::SuperLeft,
428+
KeyCode::MetaRight => keyboard::key::Code::SuperRight,
423429
KeyCode::ShiftLeft => keyboard::key::Code::ShiftLeft,
424430
KeyCode::ShiftRight => keyboard::key::Code::ShiftRight,
425431
KeyCode::Space => keyboard::key::Code::Space,
@@ -502,7 +508,6 @@ pub fn key_code(key_code: layershellev::keyboard::KeyCode) -> Option<keyboard::k
502508
KeyCode::AudioVolumeMute => keyboard::key::Code::AudioVolumeMute,
503509
KeyCode::AudioVolumeUp => keyboard::key::Code::AudioVolumeUp,
504510
KeyCode::WakeUp => keyboard::key::Code::WakeUp,
505-
KeyCode::Meta => keyboard::key::Code::Meta,
506511
KeyCode::Hyper => keyboard::key::Code::Hyper,
507512
KeyCode::Turbo => keyboard::key::Code::Turbo,
508513
KeyCode::Abort => keyboard::key::Code::Abort,

iced_sessionlock/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ sessionlockev.workspace = true
3434
futures.workspace = true
3535
window_clipboard.workspace = true
3636
log.workspace = true
37+
smol_str.workspace = true
3738

3839
# workspace features cannot be optional so we need to define the dependency here
3940
mundy = { version = "0.2.0", optional = true }

iced_sessionlock/src/conversion.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,10 @@ pub fn window_event(
9797
}))
9898
}
9999
SessionLockEvent::KeyBoardInput { event, .. } => Some(IcedEvent::Keyboard({
100-
let key = event.key_without_modifiers();
100+
let key = event.key_without_modifiers.clone();
101101
let text = event
102-
.text_with_all_modifiers()
102+
.text_with_all_modifiers
103+
.clone()
103104
.map(SmolStr::new)
104105
.filter(|text| !text.as_str().chars().any(is_private_use));
105106
let SessionLockKeyEvent {

iced_sessionlock/src/conversion/keymap.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,14 @@ pub fn key(key: sessionlockev::keyboard::Key) -> iced_core::keyboard::Key {
99
use sessionlockev::keyboard::NamedKey;
1010

1111
match key {
12-
sessionlockev::keyboard::Key::Character(c) => keyboard::Key::Character(c),
12+
sessionlockev::keyboard::Key::Character(c) if c == " " => {
13+
keyboard::Key::Named(Named::Space)
14+
}
15+
sessionlockev::keyboard::Key::Character(c) => {
16+
keyboard::Key::Character(smol_str::SmolStr::from(c.to_string()))
17+
}
18+
// Hyper and Super are deprecated
19+
#[allow(deprecated)]
1320
sessionlockev::keyboard::Key::Named(named_key) => keyboard::Key::Named(match named_key {
1421
NamedKey::Alt => Named::Alt,
1522
NamedKey::AltGraph => Named::AltGraph,
@@ -27,7 +34,6 @@ pub fn key(key: sessionlockev::keyboard::Key) -> iced_core::keyboard::Key {
2734
NamedKey::Super => Named::Super,
2835
NamedKey::Enter => Named::Enter,
2936
NamedKey::Tab => Named::Tab,
30-
NamedKey::Space => Named::Space,
3137
NamedKey::ArrowDown => Named::ArrowDown,
3238
NamedKey::ArrowLeft => Named::ArrowLeft,
3339
NamedKey::ArrowRight => Named::ArrowRight,
@@ -330,7 +336,7 @@ pub fn modifiers(modifiers: ModifiersState) -> iced_core::keyboard::Modifiers {
330336
result.set(keyboard::Modifiers::SHIFT, modifiers.shift_key());
331337
result.set(keyboard::Modifiers::CTRL, modifiers.control_key());
332338
result.set(keyboard::Modifiers::ALT, modifiers.alt_key());
333-
result.set(keyboard::Modifiers::LOGO, modifiers.super_key());
339+
result.set(keyboard::Modifiers::LOGO, modifiers.meta_key());
334340

335341
result
336342
}
@@ -359,6 +365,8 @@ use iced_core::keyboard;
359365
pub fn key_code(key_code: sessionlockev::keyboard::KeyCode) -> Option<keyboard::key::Code> {
360366
use sessionlockev::keyboard::KeyCode;
361367

368+
// Hyper and Turbo are deprecated
369+
#[allow(deprecated)]
362370
Some(match key_code {
363371
KeyCode::Backquote => keyboard::key::Code::Backquote,
364372
KeyCode::Backslash => keyboard::key::Code::Backslash,
@@ -418,8 +426,8 @@ pub fn key_code(key_code: sessionlockev::keyboard::KeyCode) -> Option<keyboard::
418426
KeyCode::ControlLeft => keyboard::key::Code::ControlLeft,
419427
KeyCode::ControlRight => keyboard::key::Code::ControlRight,
420428
KeyCode::Enter => keyboard::key::Code::Enter,
421-
KeyCode::SuperLeft => keyboard::key::Code::SuperLeft,
422-
KeyCode::SuperRight => keyboard::key::Code::SuperRight,
429+
KeyCode::MetaLeft => keyboard::key::Code::SuperLeft,
430+
KeyCode::MetaRight => keyboard::key::Code::SuperRight,
423431
KeyCode::ShiftLeft => keyboard::key::Code::ShiftLeft,
424432
KeyCode::ShiftRight => keyboard::key::Code::ShiftRight,
425433
KeyCode::Space => keyboard::key::Code::Space,
@@ -502,7 +510,6 @@ pub fn key_code(key_code: sessionlockev::keyboard::KeyCode) -> Option<keyboard::
502510
KeyCode::AudioVolumeMute => keyboard::key::Code::AudioVolumeMute,
503511
KeyCode::AudioVolumeUp => keyboard::key::Code::AudioVolumeUp,
504512
KeyCode::WakeUp => keyboard::key::Code::WakeUp,
505-
KeyCode::Meta => keyboard::key::Code::Meta,
506513
KeyCode::Hyper => keyboard::key::Code::Hyper,
507514
KeyCode::Turbo => keyboard::key::Code::Turbo,
508515
KeyCode::Abort => keyboard::key::Code::Abort,

layershellev/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ wayland-backend.workspace = true
2828

2929
rwh_06.workspace = true
3030

31-
bitflags.workspace = true
32-
3331
calloop.workspace = true
3432
calloop-wayland-source.workspace = true
3533

sessionlockev/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ wayland-protocols-misc.workspace = true
2626

2727
wayland-backend.workspace = true
2828

29-
bitflags.workspace = true
30-
3129
rwh_06.workspace = true
3230

3331
calloop.workspace = true

0 commit comments

Comments
 (0)