diff --git a/doc/Custom-layouts.md b/doc/Custom-layouts.md index 5b18968..226a892 100644 --- a/doc/Custom-layouts.md +++ b/doc/Custom-layouts.md @@ -39,6 +39,7 @@ The ``...`` pair follows the declaration tag and encloses t * `script`: The (main) writing system that the keyboard supports. The possible values are `arabic`, `armenian`, `bengali`, `cyrillic`, `devanagari`, `gujarati`, `hangul`, `hebrew`, `latin`, `persian`, `shavian`, and `urdu`. It defaults to `latin`. * `numpad_script`: The script to use for the numpad. This is useful for scripts where a different, non-ASCII set of numerals is used, like Devanagari and Arabic. It defaults to the same as `script`. * `bottom_row`: Whether or not to show the common bottom row. It accepts `true` or `false`, and defaults to `true`. If your custom layout defines the bottom row, then specify `bottom_row=false` to disable the built-in bottom row. +* `locale_extra_keys`: Whether language-dependent extra keys from [method.xml](../res/xml/method.xml) should be added to this layout. It accepts `true` or `false`, and defaults to `true`. ## Row The ``...`` pair encloses one row on the keyboard. It has only one optional property: diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java index 2afe5ef..f605381 100644 --- a/srcs/juloo.keyboard2/Config.java +++ b/srcs/juloo.keyboard2/Config.java @@ -234,7 +234,7 @@ public final class Config extra_keys.put(KeyValue.getKeyByName("config"), KeyboardData.PreferredPos.ANYWHERE); extra_keys.putAll(extra_keys_param); extra_keys.putAll(extra_keys_custom); - if (extra_keys_subtype != null) + if (extra_keys_subtype != null && kw.locale_extra_keys) { Set present = new HashSet(); present.addAll(kw.getKeys().keySet()); diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java index 68ebd10..aaff31d 100644 --- a/srcs/juloo.keyboard2/KeyboardData.java +++ b/srcs/juloo.keyboard2/KeyboardData.java @@ -31,6 +31,8 @@ public final class KeyboardData public final String name; /** Whether the bottom row should be added. */ public final boolean bottom_row; + /** Whether extra keys from [method.xml] should be added to this layout. */ + public final boolean locale_extra_keys; /** Position of every keys on the layout, see [getKeys()]. */ private Map _key_pos = null; @@ -234,6 +236,7 @@ public final class KeyboardData if (!expect_tag(parser, "keyboard")) throw error(parser, "Expected tag "); boolean bottom_row = attribute_bool(parser, "bottom_row", true); + boolean locale_extra_keys = attribute_bool(parser, "locale_extra_keys", true); float specified_kw = attribute_float(parser, "width", 0f); String script = parser.getAttributeValue(null, "script"); if (script != null && script.equals("")) @@ -263,7 +266,7 @@ public final class KeyboardData } } float kw = (specified_kw != 0f) ? specified_kw : compute_max_width(rows); - return new KeyboardData(rows, kw, modmap, script, numpad_script, name, bottom_row); + return new KeyboardData(rows, kw, modmap, script, numpad_script, name, bottom_row, locale_extra_keys); } private static float compute_max_width(List rows) @@ -282,7 +285,7 @@ public final class KeyboardData } protected KeyboardData(List rows_, float kw, Modmap mm, String sc, - String npsc, String name_, boolean bottom_row_) + String npsc, String name_, boolean bottom_row_, boolean locale_extra_keys_) { float kh = 0.f; for (Row r : rows_) @@ -295,13 +298,14 @@ public final class KeyboardData keysWidth = Math.max(kw, 1f); keysHeight = kh; bottom_row = bottom_row_; + locale_extra_keys = locale_extra_keys_; } - /** Copies the fields of an other keyboard, with rows changed. */ + /** Copies the fields of a keyboard, with rows changed. */ protected KeyboardData(KeyboardData src, List rows) { this(rows, compute_max_width(rows), src.modmap, src.script, - src.numpad_script, src.name, src.bottom_row); + src.numpad_script, src.name, src.bottom_row, src.locale_extra_keys); } public static class Row