Skip to content

Commit f42ce96

Browse files
Better keyboard layout
1 parent fb59ce1 commit f42ce96

2 files changed

Lines changed: 19 additions & 10 deletions

File tree

frontend/src/pages/keyboard.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,24 @@ pub fn OnScreenKeyboard(
3939
vec!["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
4040
vec!["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"],
4141
vec!["a", "s", "d", "f", "g", "h", "j", "k", "l"],
42-
vec!["z", "x", "c", "v", "b", "n", "m"],
42+
vec!["z", "x", "c", "v", "b", "n", "m", "."],
4343
];
4444
let rows_upper = vec![
4545
vec!["!", "@", "#", "$", "%", "^", "&", "*", "(", ")"],
4646
vec!["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"],
4747
vec!["A", "S", "D", "F", "G", "H", "J", "K", "L"],
48-
vec!["Z", "X", "C", "V", "B", "N", "M"],
48+
vec!["Z", "X", "C", "V", "B", "N", "M", "."],
4949
];
5050

5151
view! {
5252
<div class="osk">
5353
{move || {
5454
let rows = if shift.get() { &rows_upper } else { &rows_lower };
5555
rows.iter().enumerate().map(|(row_idx, row)| {
56+
// The home row (a s d f …) gets a half-key indent for a real-keyboard stagger
57+
let row_class = if row_idx == 2 { "osk-row osk-row-home" } else { "osk-row" };
5658
view! {
57-
<div class="osk-row">
59+
<div class=row_class>
5860
{if row_idx == 3 {
5961
let on_key_shift = on_key;
6062
Some(view! {
@@ -76,10 +78,10 @@ pub fn OnScreenKeyboard(
7678
</button>
7779
}
7880
}).collect_view()}
79-
{if row_idx == 3 {
81+
{if row_idx == 1 {
8082
let on_key_bs = on_key;
8183
Some(view! {
82-
<button class="osk-key osk-key-wide" on:click=move |_| on_key_bs("Backspace".into())>{move || i18n.get().t("keyboard.bksp")}</button>
84+
<button class="osk-key osk-key-wide" on:click=move |_| on_key_bs("Backspace".into())>"←"</button>
8385
})
8486
} else {
8587
None
@@ -90,11 +92,9 @@ pub fn OnScreenKeyboard(
9092
}}
9193
<div class="osk-row">
9294
{
93-
let on_key_dot = on_key;
9495
let on_key_space = on_key;
9596
let on_key_enter = on_key;
9697
view! {
97-
<button class="osk-key" on:click=move |_| on_key_dot(".".into())>"."</button>
9898
<button class="osk-key osk-key-space" on:click=move |_| on_key_space("Space".into())>{move || i18n.get().t("keyboard.space")}</button>
9999
<button class="osk-key osk-key-wide" on:click=move |_| on_key_enter("Enter".into())>{move || i18n.get().t("keyboard.enter")}</button>
100100
}

frontend/style/main.css

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2542,17 +2542,26 @@ button:focus-visible {
25422542
border-radius: var(--radius-md);
25432543
padding: var(--space-sm);
25442544
margin-bottom: var(--space-md);
2545+
/* Hug the keyboard and centre the whole block so rows align like a real keyboard */
2546+
width: fit-content;
2547+
max-width: 100%;
2548+
margin-inline: auto;
25452549
}
25462550

25472551
.osk-row {
25482552
display: flex;
2549-
justify-content: center;
2553+
justify-content: flex-start;
25502554
gap: 4px;
25512555
margin-bottom: 4px;
25522556
}
25532557

2558+
/* Half-key indent on the home row for the classic keyboard stagger */
2559+
.osk-row-home {
2560+
margin-left: 22px;
2561+
}
2562+
25542563
.osk-key {
2555-
min-width: 36px;
2564+
width: 40px;
25562565
min-height: var(--touch-min);
25572566
padding: var(--space-xs) var(--space-sm);
25582567
background: var(--surface);
@@ -2562,7 +2571,7 @@ button:focus-visible {
25622571
font-weight: 500;
25632572
cursor: pointer;
25642573
transition: all 0.1s ease;
2565-
flex: 0 1 auto;
2574+
flex: 0 0 auto;
25662575
color: var(--text);
25672576
}
25682577

0 commit comments

Comments
 (0)