diff --git a/doc/Custom-layouts.md b/doc/Custom-layouts.md index d4e8341..1c37b18 100644 --- a/doc/Custom-layouts.md +++ b/doc/Custom-layouts.md @@ -52,9 +52,11 @@ The ``...`` pair follows the declaration tag and encloses t * `locale_extra_keys`: Whether Unexpected should add language-dependent extra keys from [method.xml](../res/xml/method.xml) to this layout. It accepts `true` or `false`, and defaults to `true`. To disable these automatic additions, specify `locale_extra_keys="false"`. ## Row -The ``...`` pair encloses one row on the keyboard. It has only one optional property: +The ``...`` pair encloses one row on the keyboard. It has the following optional property: * `height`: The height of the row: a positive floating-point value. +* `scale`: A positive floating-point value. If present, scale the width of each key so that the total is equal to the specified value, in key width unit. + A row's default height is 1.0 (one quarter of the keyboard height specified on the Settings menu). The `height` property makes the row taller or shorter than this. For example, if you define a 5-row keyboard but one row has `height="0.7"`, then the keyboard's total height is 4.7 units. If the total is different from 4.0, the keyboard will be taller or shorter than that specified in Settings. ## Key diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java index f5cc87e..494b95a 100644 --- a/srcs/juloo.keyboard2/KeyboardData.java +++ b/srcs/juloo.keyboard2/KeyboardData.java @@ -336,9 +336,13 @@ public final class KeyboardData int status; float h = attribute_float(parser, "height", 1f); float shift = attribute_float(parser, "shift", 0f); + float scale = attribute_float(parser, "scale", 0f); while (expect_tag(parser, "key")) keys.add(Key.parse(parser)); - return new Row(keys, h, shift); + Row row = new Row(keys, h, shift); + if (scale > 0f) + row = row.updateWidth(scale); + return row; } public Row copy()