mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-08-18 00:50:06 +02:00
Compare commits
7 Commits
settings-h
...
layout-row
Author | SHA1 | Date | |
---|---|---|---|
|
3c62e2b6f9 | ||
|
82b8568310 | ||
|
f9b844e988 | ||
|
6f0244a29e | ||
|
2a50a4a129 | ||
|
9ab099175d | ||
|
0445c310ad |
@@ -52,9 +52,11 @@ The `<keyboard>`...`</keyboard>` 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 `<row>`...`</row>` pair encloses one row on the keyboard. It has only one optional property:
|
||||
The `<row>`...`</row>` 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
|
||||
|
91
funding.json
Normal file
91
funding.json
Normal file
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"version": "v1.0.0",
|
||||
"entity": {
|
||||
"type": "individual",
|
||||
"role": "owner",
|
||||
"name": "Julow",
|
||||
"email": "jules@j3s.fr",
|
||||
"description": "Open source developer and maintainer of Unexpected Keyboard.",
|
||||
"webpageUrl": {
|
||||
"url": "https://github.com/Julow"
|
||||
}
|
||||
},
|
||||
"projects": [
|
||||
{
|
||||
"guid": "unexpected-keyboard",
|
||||
"name": "Unexpected Keyboard",
|
||||
"description": "Lightweight and privacy-conscious virtual keyboard for Android.",
|
||||
"webpageUrl": {
|
||||
"url": "https://github.com/Julow/Unexpected-Keyboard/"
|
||||
},
|
||||
"repositoryUrl": {
|
||||
"url": "https://github.com/Julow/Unexpected-Keyboard/"
|
||||
},
|
||||
"licenses": [
|
||||
"spdx:GPL-3.0",
|
||||
"spdx:CC0-1.0"
|
||||
],
|
||||
"tags": [
|
||||
"android",
|
||||
"mobile",
|
||||
"privacy",
|
||||
"productivity",
|
||||
"programming",
|
||||
"user-experience"
|
||||
]
|
||||
}
|
||||
],
|
||||
"funding": {
|
||||
"channels": [
|
||||
{
|
||||
"guid": "liberapay",
|
||||
"type": "other",
|
||||
"address": "https://liberapay.com/Julow/",
|
||||
"description": "Recurring donations for funding Unexpected Keyboard."
|
||||
},
|
||||
{
|
||||
"guid": "github-sponsors",
|
||||
"type": "other",
|
||||
"address": "https://github.com/sponsors/Julow",
|
||||
"description": "Recurring donations for funding Unexpected Keyboard."
|
||||
},
|
||||
{
|
||||
"guid": "paypal",
|
||||
"type": "other",
|
||||
"address": "https://paypal.me/JulesAguillon",
|
||||
"description": "One-time donations for funding Unexpected-keyboard."
|
||||
}
|
||||
],
|
||||
"plans": [
|
||||
{
|
||||
"guid": "fund-maintenance",
|
||||
"status": "active",
|
||||
"name": "Fund developer time",
|
||||
"description": "Help the maintainers spend time on Unexpected Keyboard",
|
||||
"amount": 0,
|
||||
"currency": "EUR",
|
||||
"frequency": "monthly",
|
||||
"channels": [
|
||||
"liberapay",
|
||||
"github-sponsors",
|
||||
"paypal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"guid": "one-time-contribution",
|
||||
"status": "active",
|
||||
"name": "Fund developer time",
|
||||
"description": "Help the maintainers spend time on Unexpected Keyboard",
|
||||
"amount": 0,
|
||||
"currency": "EUR",
|
||||
"frequency": "one-time",
|
||||
"channels": [
|
||||
"liberapay",
|
||||
"github-sponsors",
|
||||
"paypal"
|
||||
]
|
||||
}
|
||||
],
|
||||
"history": []
|
||||
}
|
||||
}
|
@@ -40,7 +40,7 @@
|
||||
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="margin_bottom_landscape_unfolded" android:title="@string/pref_landscape_unfolded" android:summary="%sdp" android:defaultValue="3" min="0" max="100"/>
|
||||
</PreferenceScreen>
|
||||
<PreferenceScreen android:title="@string/pref_keyboard_height_title">
|
||||
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height" android:title="@string/pref_portrait" android:summary="%s%%" android:defaultValue="35" min="10" max="50"/>
|
||||
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height" android:title="@string/pref_portrait" android:summary="%s%%" android:defaultValue="35" min="10" max="100"/>
|
||||
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height_landscape" android:title="@string/pref_landscape" android:summary="%s%%" android:defaultValue="50" min="20" max="65"/>
|
||||
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height_unfolded" android:title="@string/pref_portrait_unfolded" android:summary="%s%%" android:defaultValue="35" min="10" max="50"/>
|
||||
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height_landscape_unfolded" android:title="@string/pref_landscape_unfolded" android:summary="%s%%" android:defaultValue="50" min="20" max="65"/>
|
||||
|
@@ -49,7 +49,7 @@ public final class ClipboardHistoryService
|
||||
/** The maximum size limits the amount of user data stored in memory but also
|
||||
gives a sense to the user that the history is not persisted and can be
|
||||
forgotten as soon as the app stops. */
|
||||
public static final int MAX_HISTORY_SIZE = 3;
|
||||
public static final int MAX_HISTORY_SIZE = 6;
|
||||
/** Time in ms until history entries expire. */
|
||||
public static final long HISTORY_TTL_MS = 5 * 60 * 1000;
|
||||
|
||||
|
@@ -42,7 +42,8 @@ public final class Config
|
||||
public long longPressInterval;
|
||||
public boolean keyrepeat_enabled;
|
||||
public float margin_bottom;
|
||||
public float keyHeight;
|
||||
public int keyboardHeightPercent;
|
||||
public int screenHeightPixels;
|
||||
public float horizontal_margin;
|
||||
public float key_vertical_margin;
|
||||
public float key_horizontal_margin;
|
||||
@@ -110,9 +111,6 @@ public final class Config
|
||||
orientation_landscape = res.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
|
||||
foldable_unfolded = foldableUnfolded;
|
||||
|
||||
// The height of the keyboard is relative to the height of the screen.
|
||||
// This is the height of the keyboard if it have 4 rows.
|
||||
int keyboardHeightPercent;
|
||||
float characterSizeScale = 1.f;
|
||||
String show_numpad_s = _prefs.getString("show_numpad", "never");
|
||||
show_numpad = "always".equals(show_numpad_s);
|
||||
@@ -159,9 +157,7 @@ public final class Config
|
||||
borderConfig = _prefs.getBoolean("border_config", false);
|
||||
customBorderRadius = _prefs.getInt("custom_border_radius", 0) / 100.f;
|
||||
customBorderLineWidth = get_dip_pref(dm, "custom_border_line_width", 0);
|
||||
// Do not substract key_vertical_margin from keyHeight because this is done
|
||||
// during rendering.
|
||||
keyHeight = dm.heightPixels * keyboardHeightPercent / 100 / 4;
|
||||
screenHeightPixels = dm.heightPixels;
|
||||
horizontal_margin =
|
||||
get_dip_pref_oriented(dm, "horizontal_margin", 3, 28);
|
||||
double_tap_lock_shift = _prefs.getBoolean("lock_double_tap", false);
|
||||
|
@@ -42,6 +42,8 @@ public class Keyboard2View extends View
|
||||
private Config _config;
|
||||
|
||||
private float _keyWidth;
|
||||
private float _mainLabelSize;
|
||||
private float _subLabelSize;
|
||||
private float _marginRight;
|
||||
private float _marginLeft;
|
||||
private float _marginBottom;
|
||||
@@ -227,7 +229,7 @@ public class Keyboard2View extends View
|
||||
return null;
|
||||
for (KeyboardData.Row row : _keyboard.rows)
|
||||
{
|
||||
y += (row.shift + row.height) * _config.keyHeight;
|
||||
y += (row.shift + row.height) * _tc.row_height;
|
||||
if (ty < y)
|
||||
return row;
|
||||
}
|
||||
@@ -307,9 +309,19 @@ public class Keyboard2View extends View
|
||||
_marginRight = Math.max(_config.horizontal_margin, insets_right);
|
||||
_marginBottom = _config.margin_bottom + insets_bottom;
|
||||
_keyWidth = (width - _marginLeft - _marginRight) / _keyboard.keysWidth;
|
||||
_tc = new Theme.Computed(_theme, _config, _keyWidth);
|
||||
_tc = new Theme.Computed(_theme, _config, _keyWidth, _keyboard);
|
||||
// Compute the size of labels based on the width or the height of keys. The
|
||||
// margin around keys is taken into account. Keys normal aspect ratio is
|
||||
// assumed to be 3/2. It's generally more, the width computation is useful
|
||||
// when the keyboard is unusually high.
|
||||
float labelBaseSize = Math.min(
|
||||
_tc.row_height - _tc.vertical_margin,
|
||||
_keyWidth * 3/2 - _tc.horizontal_margin
|
||||
) * _config.characterSize;
|
||||
_mainLabelSize = labelBaseSize * _config.labelTextSize;
|
||||
_subLabelSize = labelBaseSize * _config.sublabelTextSize;
|
||||
int height =
|
||||
(int)(_config.keyHeight * _keyboard.keysHeight
|
||||
(int)(_tc.row_height * _keyboard.keysHeight
|
||||
+ _config.marginTop + _marginBottom);
|
||||
setMeasuredDimension(width, height);
|
||||
}
|
||||
@@ -352,9 +364,9 @@ public class Keyboard2View extends View
|
||||
float y = _tc.margin_top;
|
||||
for (KeyboardData.Row row : _keyboard.rows)
|
||||
{
|
||||
y += row.shift * _config.keyHeight;
|
||||
y += row.shift * _tc.row_height;
|
||||
float x = _marginLeft + _tc.margin_left;
|
||||
float keyH = row.height * _config.keyHeight - _tc.vertical_margin;
|
||||
float keyH = row.height * _tc.row_height - _tc.vertical_margin;
|
||||
for (KeyboardData.Key k : row.keys)
|
||||
{
|
||||
x += k.shift * _keyWidth;
|
||||
@@ -372,7 +384,7 @@ public class Keyboard2View extends View
|
||||
drawIndication(canvas, k, x, y, keyW, keyH, _tc);
|
||||
x += _keyWidth * k.width;
|
||||
}
|
||||
y += row.height * _config.keyHeight;
|
||||
y += row.height * _tc.row_height;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -440,7 +452,7 @@ public class Keyboard2View extends View
|
||||
kv = modifyKey(kv, _mods);
|
||||
if (kv == null)
|
||||
return;
|
||||
float textSize = scaleTextSize(kv, _config.labelTextSize, keyH);
|
||||
float textSize = scaleTextSize(kv, true);
|
||||
Paint p = tc.label_paint(kv.hasFlagsAny(KeyValue.FLAG_KEY_FONT), labelColor(kv, isKeyDown, false), textSize);
|
||||
canvas.drawText(kv.getString(), x, (keyH - p.ascent() - p.descent()) / 2f + y, p);
|
||||
}
|
||||
@@ -454,7 +466,7 @@ public class Keyboard2View extends View
|
||||
kv = modifyKey(kv, _mods);
|
||||
if (kv == null)
|
||||
return;
|
||||
float textSize = scaleTextSize(kv, _config.sublabelTextSize, keyH);
|
||||
float textSize = scaleTextSize(kv, false);
|
||||
Paint p = tc.sublabel_paint(kv.hasFlagsAny(KeyValue.FLAG_KEY_FONT), labelColor(kv, isKeyDown, true), textSize, a);
|
||||
float subPadding = _config.keyPadding;
|
||||
if (v == Vertical.CENTER)
|
||||
@@ -479,14 +491,15 @@ public class Keyboard2View extends View
|
||||
if (k.indication == null || k.indication.equals(""))
|
||||
return;
|
||||
Paint p = tc.indication_paint;
|
||||
p.setTextSize(keyH * _config.sublabelTextSize * _config.characterSize);
|
||||
p.setTextSize(_subLabelSize);
|
||||
canvas.drawText(k.indication, 0, k.indication.length(),
|
||||
x + keyW / 2f, (keyH - p.ascent() - p.descent()) * 4/5 + y, p);
|
||||
}
|
||||
|
||||
private float scaleTextSize(KeyValue k, float rel_size, float keyH)
|
||||
private float scaleTextSize(KeyValue k, boolean main_label)
|
||||
{
|
||||
float smaller_font = k.hasFlagsAny(KeyValue.FLAG_SMALLER_FONT) ? 0.75f : 1.f;
|
||||
return keyH * rel_size * smaller_font * _config.characterSize;
|
||||
float label_size = main_label ? _mainLabelSize : _subLabelSize;
|
||||
return label_size * smaller_font;
|
||||
}
|
||||
}
|
||||
|
@@ -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()
|
||||
|
@@ -94,14 +94,23 @@ public class Theme
|
||||
public final float horizontal_margin;
|
||||
public final float margin_top;
|
||||
public final float margin_left;
|
||||
public final float row_height;
|
||||
public final Paint indication_paint;
|
||||
|
||||
public final Key key;
|
||||
public final Key key_activated;
|
||||
|
||||
public Computed(Theme theme, Config config, float keyWidth)
|
||||
public Computed(Theme theme, Config config, float keyWidth, KeyboardData layout)
|
||||
{
|
||||
vertical_margin = config.key_vertical_margin * config.keyHeight;
|
||||
// Rows height is proportional to the keyboard height, meaning it doesn't
|
||||
// change for layouts with more or less rows. 3.95 is the usual height of
|
||||
// a layout in KeyboardData unit. The keyboard will be higher if the
|
||||
// layout has more rows and smaller if it has less because rows stay the
|
||||
// same height.
|
||||
row_height = Math.min(
|
||||
config.screenHeightPixels * config.keyboardHeightPercent / 100 / 3.95f,
|
||||
config.screenHeightPixels / layout.keysHeight);
|
||||
vertical_margin = config.key_vertical_margin * row_height;
|
||||
horizontal_margin = config.key_horizontal_margin * keyWidth;
|
||||
// Add half of the key margin on the left and on the top as it's also
|
||||
// added on the right and on the bottom of every keys.
|
||||
|
@@ -26,17 +26,17 @@
|
||||
<key key0="ж" key2="=" key3="+"/>
|
||||
<key key0="э" key2="|" key3="\\"/>
|
||||
</row>
|
||||
<row>
|
||||
<key width="1.18" key0="shift" key2="loc capslock"/>
|
||||
<key width="0.96" key0="я"/>
|
||||
<key width="0.96" key0="ч"/>
|
||||
<key width="0.96" key0="с"/>
|
||||
<key width="0.96" key0="м"/>
|
||||
<key width="0.96" key0="и" key1="loc і" key2="<" key3="."/>
|
||||
<key width="0.96" key0="т" key2=">" key3=","/>
|
||||
<key width="0.96" key0="ь" key1="ъ" key2="\?" key3="/"/>
|
||||
<key width="0.96" key0="б" key2=":" key3=";"/>
|
||||
<key width="0.96" key0="ю" key2=""" key3="'"/>
|
||||
<key width="1.18" key0="backspace" key2="delete"/>
|
||||
<row scale="11">
|
||||
<key width="1.22" key0="shift" key2="loc capslock"/>
|
||||
<key key0="я"/>
|
||||
<key key0="ч"/>
|
||||
<key key0="с"/>
|
||||
<key key0="м"/>
|
||||
<key key0="и" key1="loc і" key2="<" key3="."/>
|
||||
<key key0="т" key2=">" key3=","/>
|
||||
<key key0="ь" key1="ъ" key2="\?" key3="/"/>
|
||||
<key key0="б" key2=":" key3=";"/>
|
||||
<key key0="ю" key2=""" key3="'"/>
|
||||
<key width="1.22" key0="backspace" key2="delete"/>
|
||||
</row>
|
||||
</keyboard>
|
||||
|
@@ -26,17 +26,17 @@
|
||||
<key key0="ж" key7="0" />
|
||||
<key key0="э" key7="\?" key3="/" />
|
||||
</row>
|
||||
<row>
|
||||
<key width="1.18" key0="shift" key2="loc capslock" />
|
||||
<key width="0.96" key0="я" key7="`" key8=";" />
|
||||
<key width="0.96" key0="ч" key7="*" key8=":" />
|
||||
<key width="0.96" key0="с" key7="&" key8="\#" />
|
||||
<key width="0.96" key0="м" key7="|" key8="\\" />
|
||||
<key width="0.96" key0="и" key7="~" />
|
||||
<key width="0.96" key0="т" key7="ц" />
|
||||
<key width="0.96" key0="ӣ" key3="<" key2=">" />
|
||||
<key width="0.96" key0="б" key7="ъ" key8="ы" />
|
||||
<key width="0.96" key0="ю" key7=""" key8="'"/>
|
||||
<key width="1.18" key0="." key7="," />
|
||||
<row scale="11">
|
||||
<key width="1.22" key0="shift" key2="loc capslock" />
|
||||
<key key0="я" key7="`" key8=";" />
|
||||
<key key0="ч" key7="*" key8=":" />
|
||||
<key key0="с" key7="&" key8="\#" />
|
||||
<key key0="м" key7="|" key8="\\" />
|
||||
<key key0="и" key7="~" />
|
||||
<key key0="т" key7="ц" />
|
||||
<key key0="ӣ" key3="<" key2=">" />
|
||||
<key key0="б" key7="ъ" key8="ы" />
|
||||
<key key0="ю" key7=""" key8="'"/>
|
||||
<key width="1.22" key0="." key7="," />
|
||||
</row>
|
||||
</keyboard>
|
||||
|
@@ -26,17 +26,17 @@
|
||||
<key key0="ж" key7="0" />
|
||||
<key key0="э" key7="/" key8="|" />
|
||||
</row>
|
||||
<row>
|
||||
<key width="1.18" key0="shift" />
|
||||
<key width="0.96" key0="ꙗ" key7="combining_breve" key8=";" />
|
||||
<key width="0.96" key0="ч" key7="combining_pokrytie" key8=":" />
|
||||
<key width="0.96" key0="с" key7="combining_inverted_breve" key8="`" />
|
||||
<key width="0.96" key0="м" key7="ѭ" />
|
||||
<key width="0.96" key0="и" key7="combining_vertical_tilde" key8="-" />
|
||||
<key width="0.96" key0="т" key7="\?" key8="\\" />
|
||||
<key width="0.96" key0="ц" key3="<" key2=">" />
|
||||
<key width="0.96" key0="б" key3="(" key2=")" />
|
||||
<key width="0.96" key0="ю" key3="{" key2="}" />
|
||||
<key width="1.18" key0="." key7="," key8="_" />
|
||||
<row scale="11">
|
||||
<key width="1.22" key0="shift" />
|
||||
<key key0="ꙗ" key7="combining_breve" key8=";" />
|
||||
<key key0="ч" key7="combining_pokrytie" key8=":" />
|
||||
<key key0="с" key7="combining_inverted_breve" key8="`" />
|
||||
<key key0="м" key7="ѭ" />
|
||||
<key key0="и" key7="combining_vertical_tilde" key8="-" />
|
||||
<key key0="т" key7="\?" key8="\\" />
|
||||
<key key0="ц" key3="<" key2=">" />
|
||||
<key key0="б" key3="(" key2=")" />
|
||||
<key key0="ю" key3="{" key2="}" />
|
||||
<key width="1.22" key0="." key7="," key8="_" />
|
||||
</row>
|
||||
</keyboard>
|
||||
|
@@ -1,22 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<keyboard name="देवनागरी (हिंदी)-2" script="devanagari">
|
||||
<row>
|
||||
<key shift="0.35" width="0.9" c="क" nw="ख" ne="घ" sw="ङ" se="ग"/>
|
||||
<key width="0.9" c="च" nw="छ" ne="झ" sw="ञ" se="ज"/>
|
||||
<key width="0.9" c="ट" nw="ठ" ne="ढ" sw="ण" se="ड" anticircle="७" indication="७"/>
|
||||
<key width="0.9" c="त" nw="थ" ne="ध" sw="न" se="द" anticircle="८" indication="८"/>
|
||||
<key width="0.9" c="प" nw="फ" ne="भ" sw="म" se="ब" anticircle="९" indication="९"/>
|
||||
<key width="0.9" c="र" nw="ज्ञ" ne="ल" sw="य" se="व"/>
|
||||
<key width="0.9" c="ह" nw="श" ne="ळ" sw="स" se="ष"/>
|
||||
<row scale="6.6">
|
||||
<key shift="0.35" c="क" nw="ख" ne="घ" sw="ङ" se="ग"/>
|
||||
<key c="च" nw="छ" ne="झ" sw="ञ" se="ज"/>
|
||||
<key c="ट" nw="ठ" ne="ढ" sw="ण" se="ड" anticircle="७" indication="७"/>
|
||||
<key c="त" nw="थ" ne="ध" sw="न" se="द" anticircle="८" indication="८"/>
|
||||
<key c="प" nw="फ" ne="भ" sw="म" se="ब" anticircle="९" indication="९"/>
|
||||
<key c="र" nw="ज्ञ" ne="ल" sw="य" se="व"/>
|
||||
<key c="ह" nw="श" ne="ळ" sw="स" se="ष"/>
|
||||
</row>
|
||||
<row>
|
||||
<key shift="0.35" width="0.9" c="ा" nw="अ" ne="आ"/>
|
||||
<key width="0.9" c="ि" nw="इ"/>
|
||||
<key width="0.9" c="ी" nw="ई" anticircle="४" indication="४"/>
|
||||
<key width="0.9" c="ु" nw="उ" ne="ऊ" se="ू" anticircle="५" indication="५"/>
|
||||
<key width="0.9" c="े" nw="ए" ne="ऋ" se="ृ" anticircle="६" indication="६"/>
|
||||
<key width="0.9" c="ै" nw="ऐ" ne="ऌ" se="ॢ"/>
|
||||
<key width="0.9" c="ो" nw="ओ" ne="औ" se="ौ"/>
|
||||
<row scale="6.6">
|
||||
<key shift="0.35" c="ा" nw="अ" ne="आ"/>
|
||||
<key c="ि" nw="इ"/>
|
||||
<key c="ी" nw="ई" anticircle="४" indication="४"/>
|
||||
<key c="ु" nw="उ" ne="ऊ" se="ू" anticircle="५" indication="५"/>
|
||||
<key c="े" nw="ए" ne="ऋ" se="ृ" anticircle="६" indication="६"/>
|
||||
<key c="ै" nw="ऐ" ne="ऌ" se="ॢ"/>
|
||||
<key c="ो" nw="ओ" ne="औ" se="ौ"/>
|
||||
</row>
|
||||
<row>
|
||||
<key c="ऽ" se="\@"/>
|
||||
|
@@ -14,17 +14,17 @@
|
||||
<key key0="פ" key2="0" key3="b)" key4="rlm"/>
|
||||
<key key0="backspace" key2="delete"/>
|
||||
</row>
|
||||
<row>
|
||||
<key key0="ש" key2="`" key1="loc tab" key3="sindot_placeholder" key4="shindot_placeholder" width="1.333"/>
|
||||
<key key0="ד" key1="~" width="1.0333"/>
|
||||
<key key0="ג" key1="geresh" key2="gershayim" width="1.0333"/>
|
||||
<key key0="כ" width="1.0333"/>
|
||||
<key key0="ע" width="1.0333"/>
|
||||
<key key0="י" key2="-" key3="_" key4="maqaf" width="1.0333"/>
|
||||
<key key0="ח" key2="=" key3="+" width="1.0333"/>
|
||||
<key key0="ל" key2="b[" key3="b{" width="1.0333"/>
|
||||
<key key0="ך" key2="b]" key3="b}" width="1.0333"/>
|
||||
<key key0="ף" key2="," key3=""" key1=":" width="1.4006"/>
|
||||
<row scale="11">
|
||||
<key key0="ש" key2="`" key1="loc tab" key3="sindot_placeholder" key4="shindot_placeholder" width="1.30"/>
|
||||
<key key0="ד" key1="~"/>
|
||||
<key key0="ג" key1="geresh" key2="gershayim"/>
|
||||
<key key0="כ"/>
|
||||
<key key0="ע"/>
|
||||
<key key0="י" key2="-" key3="_" key4="maqaf"/>
|
||||
<key key0="ח" key2="=" key3="+"/>
|
||||
<key key0="ל" key2="b[" key3="b{"/>
|
||||
<key key0="ך" key2="b]" key3="b}"/>
|
||||
<key key0="ף" key2="," key3=""" key1=":" width="1.35"/>
|
||||
</row>
|
||||
<row>
|
||||
<key key0="\\" key1="|" key2="shift" key3="loc capslock"/>
|
||||
|
@@ -1,29 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Inspired by the bépo layout, but adapted to smartphone -->
|
||||
<keyboard name="BEPO (Français)" script="latin">
|
||||
<row>
|
||||
<key width="1.1" key0="b" key1="loc esc" key2="1" key4="|"/>
|
||||
<key width="1.1" key0="é" key2="2" key4="è"/>
|
||||
<key width="1.1" key0="p" key2="3"/>
|
||||
<key width="1.1" key0="o" key2="4" key4="accent_circonflexe"/>
|
||||
<key width="1.1" key0="v" key2="5" key4="{"/>
|
||||
<key width="1.1" key0="d" key2="6" key4="}"/>
|
||||
<key width="1.1" key0="l" key2="7" key4="("/>
|
||||
<key width="1.1" key0="j" key2="8" key4=")"/>
|
||||
<key width="1.1" key0="z" key2="9" key4="["/>
|
||||
<key width="1.1" key0="w" key2="0" key4="]"/>
|
||||
<row scale="11">
|
||||
<key key0="b" key1="loc esc" key2="1" key4="|"/>
|
||||
<key key0="é" key2="2" key4="è"/>
|
||||
<key key0="p" key2="3"/>
|
||||
<key key0="o" key2="4" key4="accent_circonflexe"/>
|
||||
<key key0="v" key2="5" key4="{"/>
|
||||
<key key0="d" key2="6" key4="}"/>
|
||||
<key key0="l" key2="7" key4="("/>
|
||||
<key key0="j" key2="8" key4=")"/>
|
||||
<key key0="z" key2="9" key4="["/>
|
||||
<key key0="w" key2="0" key4="]"/>
|
||||
</row>
|
||||
<row>
|
||||
<key width="1.1" key0="a" key1="loc tab" key4="à"/>
|
||||
<key width="1.1" key0="u" key1="$" key4="ù"/>
|
||||
<key width="1.1" key0="i" key4="&"/>
|
||||
<key width="1.1" key0="e" key1="+" key2="accent_trema" key4="€"/>
|
||||
<key width="1.1" key0="c" key1="=" key4="ç"/>
|
||||
<key width="1.1" key0="t" key1="^" key4=";"/>
|
||||
<key width="1.1" key0="s" key4="!"/>
|
||||
<key width="1.1" key0="r" key4="\?"/>
|
||||
<key width="1.1" key0="n" key1="`" key2="'" key4=":"/>
|
||||
<key width="1.1" key0="m" key2="""/>
|
||||
<row scale="11">
|
||||
<key key0="a" key1="loc tab" key4="à"/>
|
||||
<key key0="u" key1="$" key4="ù"/>
|
||||
<key key0="i" key4="&"/>
|
||||
<key key0="e" key1="+" key2="accent_trema" key4="€"/>
|
||||
<key key0="c" key1="=" key4="ç"/>
|
||||
<key key0="t" key1="^" key4=";"/>
|
||||
<key key0="s" key4="!"/>
|
||||
<key key0="r" key4="\?"/>
|
||||
<key key0="n" key1="`" key2="'" key4=":"/>
|
||||
<key key0="m" key2="""/>
|
||||
</row>
|
||||
<row>
|
||||
<key width="1.5" key0="shift" key2="loc capslock" key3="<"/>
|
||||
|
Reference in New Issue
Block a user