mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-08-18 18:28:34 +02:00
Compare commits
8 Commits
sel-mode-f
...
vertical-s
Author | SHA1 | Date | |
---|---|---|---|
|
545a956b0c | ||
|
f36a7c8e9d | ||
|
004ed95dfd | ||
|
9d12981b34 | ||
|
c6da6d6ab5 | ||
|
2e0be0b32b | ||
|
42528ab211 | ||
|
71d2784026 |
@@ -7,6 +7,7 @@ arab_pc_hindu: Layout includes some ASCII punctuation but not all, missing: !, '
|
|||||||
arab_pc_ir: Layout includes some ASCII punctuation but not all, missing: ", %, ', ,, /, ;, <, =, >, ?, [, \, ], `, {, |, }
|
arab_pc_ir: Layout includes some ASCII punctuation but not all, missing: ", %, ', ,, /, ;, <, =, >, ?, [, \, ], `, {, |, }
|
||||||
beng_national: Layout includes some ASCII punctuation but not all, missing: $
|
beng_national: Layout includes some ASCII punctuation but not all, missing: $
|
||||||
beng_provat: Layout includes some ASCII punctuation but not all, missing: $, &, *, ., /, <, >, [, \, ], `, {, |, }
|
beng_provat: Layout includes some ASCII punctuation but not all, missing: $, &, *, ., /, <, >, [, \, ], `, {, |, }
|
||||||
|
cyrl_lynyertdz_mk: Layout includes some ASCII punctuation but not all, missing: "
|
||||||
cyrl_yaverti: Layout includes some ASCII punctuation but not all, missing: ~
|
cyrl_yaverti: Layout includes some ASCII punctuation but not all, missing: ~
|
||||||
cyrl_yxukeng_os: Layout includes some ASCII punctuation but not all, missing: ", #, $, &, ', @, [, ], ~
|
cyrl_yxukeng_os: Layout includes some ASCII punctuation but not all, missing: ", #, $, &, ', @, [, ], ~
|
||||||
deva_alt: Layout includes some ASCII punctuation but not all, missing: #, $, %, &, ', (, ), *, +, ., /, :, <, =, >, [, \, ], ^, _, `, {, |, }, ~
|
deva_alt: Layout includes some ASCII punctuation but not all, missing: #, $, %, &, ', (, ), *, +, ., /, :, <, =, >, [, \, ], ^, _, `, {, |, }, ~
|
||||||
|
@@ -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"`.
|
* `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
|
## 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.
|
* `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.
|
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
|
## Key
|
||||||
|
@@ -5,9 +5,9 @@
|
|||||||
<string name="short_description">Легкая клавиатура для пользователей, заботящихся о конфиденциальности.</string>
|
<string name="short_description">Легкая клавиатура для пользователей, заботящихся о конфиденциальности.</string>
|
||||||
<string name="store_description">Главная особенность клавиатуры — это возможность легко напечатать любой ASCII-символ жестами в углы клавиш.\n\nПриложение изначально было разработано для использования с Termux.\nНа данный момент оно также удобно в повседневном использовании.\n\nПриложение не содержит рекламы, не осуществляет никаких запросов в сеть и имеет открытый исходный код.</string>
|
<string name="store_description">Главная особенность клавиатуры — это возможность легко напечатать любой ASCII-символ жестами в углы клавиш.\n\nПриложение изначально было разработано для использования с Termux.\nНа данный момент оно также удобно в повседневном использовании.\n\nПриложение не содержит рекламы, не осуществляет никаких запросов в сеть и имеет открытый исходный код.</string>
|
||||||
<string name="pref_portrait">В портретном режиме</string>
|
<string name="pref_portrait">В портретном режиме</string>
|
||||||
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
|
<string name="pref_portrait_unfolded">В развернутом портретном режиме</string>
|
||||||
<string name="pref_landscape">В ландшафтном режиме</string>
|
<string name="pref_landscape">В ландшафтном режиме</string>
|
||||||
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
|
<string name="pref_landscape_unfolded">В развернутом ландшафтном режиме</string>
|
||||||
<string name="pref_category_layout">Расположение</string>
|
<string name="pref_category_layout">Расположение</string>
|
||||||
<string name="pref_label_brightness">Изменить яркость клавиатуры</string>
|
<string name="pref_label_brightness">Изменить яркость клавиатуры</string>
|
||||||
<string name="pref_keyboard_opacity">Изменить прозрачность фона</string>
|
<string name="pref_keyboard_opacity">Изменить прозрачность фона</string>
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
<item>cyrl_jcuken_kk</item>
|
<item>cyrl_jcuken_kk</item>
|
||||||
<item>cyrl_jcuken_ru</item>
|
<item>cyrl_jcuken_ru</item>
|
||||||
<item>cyrl_jcuken_uk</item>
|
<item>cyrl_jcuken_uk</item>
|
||||||
|
<item>cyrl_lynyertdz_mk</item>
|
||||||
<item>cyrl_lynyertz_sr</item>
|
<item>cyrl_lynyertz_sr</item>
|
||||||
<item>cyrl_ueishsht</item>
|
<item>cyrl_ueishsht</item>
|
||||||
<item>cyrl_yaverti</item>
|
<item>cyrl_yaverti</item>
|
||||||
@@ -105,6 +106,7 @@
|
|||||||
<item>ЙЦУКЕН (Қазақша)</item>
|
<item>ЙЦУКЕН (Қазақша)</item>
|
||||||
<item>ЙЦУКЕН (Русский)</item>
|
<item>ЙЦУКЕН (Русский)</item>
|
||||||
<item>ЙЦУКЕН (Українська)</item>
|
<item>ЙЦУКЕН (Українська)</item>
|
||||||
|
<item>ЉЊЕРТЅ (Македонски)</item>
|
||||||
<item>ЉЊЕРТЗ (Српски)</item>
|
<item>ЉЊЕРТЗ (Српски)</item>
|
||||||
<item>УЕИШЩ (Български, БДС)</item>
|
<item>УЕИШЩ (Български, БДС)</item>
|
||||||
<item>ЯВЕРТЪ</item>
|
<item>ЯВЕРТЪ</item>
|
||||||
@@ -190,6 +192,7 @@
|
|||||||
<item>@xml/cyrl_jcuken_kk</item>
|
<item>@xml/cyrl_jcuken_kk</item>
|
||||||
<item>@xml/cyrl_jcuken_ru</item>
|
<item>@xml/cyrl_jcuken_ru</item>
|
||||||
<item>@xml/cyrl_jcuken_uk</item>
|
<item>@xml/cyrl_jcuken_uk</item>
|
||||||
|
<item>@xml/cyrl_lynyertdz_mk</item>
|
||||||
<item>@xml/cyrl_lynyertz_sr</item>
|
<item>@xml/cyrl_lynyertz_sr</item>
|
||||||
<item>@xml/cyrl_ueishsht</item>
|
<item>@xml/cyrl_ueishsht</item>
|
||||||
<item>@xml/cyrl_yaverti</item>
|
<item>@xml/cyrl_yaverti</item>
|
||||||
|
@@ -41,6 +41,7 @@
|
|||||||
<subtype android:label="%s" android:languageTag="ko" android:imeSubtypeLocale="ko_KR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=hangul,default_layout=latn_qwerty_us"/>
|
<subtype android:label="%s" android:languageTag="ko" android:imeSubtypeLocale="ko_KR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=hangul,default_layout=latn_qwerty_us"/>
|
||||||
<subtype android:label="%s" android:languageTag="lt" android:imeSubtypeLocale="lt_LT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_lt,extra_keys=accent_ogonek:ą:ę:į:ų@s|accent_caron:č:š:ž@f|accent_dot_above:ė@s|accent_macron:ū@o|€"/>
|
<subtype android:label="%s" android:languageTag="lt" android:imeSubtypeLocale="lt_LT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_lt,extra_keys=accent_ogonek:ą:ę:į:ų@s|accent_caron:č:š:ž@f|accent_dot_above:ė@s|accent_macron:ū@o|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="lv" android:imeSubtypeLocale="lv_LV" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_lv,extra_keys=accent_macron:ā:ē:ī:ū@o|accent_caron:č:š:ž@f|accent_ogonek:ķ:ļ:ņ@s|accent_cedille:ģ@c|€"/>
|
<subtype android:label="%s" android:languageTag="lv" android:imeSubtypeLocale="lv_LV" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_lv,extra_keys=accent_macron:ā:ē:ī:ū@o|accent_caron:č:š:ž@f|accent_ogonek:ķ:ļ:ņ@s|accent_cedille:ģ@c|€"/>
|
||||||
|
<subtype android:label="%s" android:languageTag="mk" android:imeSubtypeLocale="mk" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_lynyertdz_mk,extra_keys=ѕ|ѓ|ќ|ѝ|ѐ|љ|њ|џ|„|“|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="mn" android:imeSubtypeLocale="mn_MN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_fcuzhen_mn,extra_keys=ү|ө"/>
|
<subtype android:label="%s" android:languageTag="mn" android:imeSubtypeLocale="mn_MN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_fcuzhen_mn,extra_keys=ү|ө"/>
|
||||||
<subtype android:label="%s" android:languageTag="mr" android:imeSubtypeLocale="mr_IN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=devanagari,default_layout=deva_inscript,extra_keys=₹"/>
|
<subtype android:label="%s" android:languageTag="mr" android:imeSubtypeLocale="mr_IN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=devanagari,default_layout=deva_inscript,extra_keys=₹"/>
|
||||||
<subtype android:label="%s" android:languageTag="mt" android:imeSubtypeLocale="mt_MT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_mt,extra_keys=accent_grave:à:è:ì:ò:ù|accent_dot_above:ċ:ż:ġ|ħ"/>
|
<subtype android:label="%s" android:languageTag="mt" android:imeSubtypeLocale="mt_MT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_mt,extra_keys=accent_grave:à:è:ì:ò:ù|accent_dot_above:ċ:ż:ġ|ħ"/>
|
||||||
|
@@ -78,6 +78,11 @@ public final class KeyEventHandler
|
|||||||
case Compose_pending:
|
case Compose_pending:
|
||||||
_autocap.stop();
|
_autocap.stop();
|
||||||
break;
|
break;
|
||||||
|
case Slider:
|
||||||
|
// Don't wait for the next key_up and move the cursor right away. This
|
||||||
|
// is called after the trigger distance have been travelled.
|
||||||
|
handle_slider(key.getSlider(), key.getSliderRepeat(), true);
|
||||||
|
break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -99,7 +104,7 @@ public final class KeyEventHandler
|
|||||||
case Modifier: break;
|
case Modifier: break;
|
||||||
case Editing: handle_editing_key(key.getEditing()); break;
|
case Editing: handle_editing_key(key.getEditing()); break;
|
||||||
case Compose_pending: _recv.set_compose_pending(true); break;
|
case Compose_pending: _recv.set_compose_pending(true); break;
|
||||||
case Slider: handle_slider(key.getSlider(), key.getSliderRepeat()); break;
|
case Slider: handle_slider(key.getSlider(), key.getSliderRepeat(), false); break;
|
||||||
case Macro: evaluate_macro(key.getMacro()); break;
|
case Macro: evaluate_macro(key.getMacro()); break;
|
||||||
}
|
}
|
||||||
update_meta_state(old_mods);
|
update_meta_state(old_mods);
|
||||||
@@ -229,9 +234,9 @@ public final class KeyEventHandler
|
|||||||
{
|
{
|
||||||
switch (ev)
|
switch (ev)
|
||||||
{
|
{
|
||||||
case COPY: send_context_menu_action(android.R.id.copy); break;
|
case COPY: if(is_selection_not_empty()) send_context_menu_action(android.R.id.copy); break;
|
||||||
case PASTE: send_context_menu_action(android.R.id.paste); break;
|
case PASTE: send_context_menu_action(android.R.id.paste); break;
|
||||||
case CUT: send_context_menu_action(android.R.id.cut); break;
|
case CUT: if(is_selection_not_empty()) send_context_menu_action(android.R.id.cut); break;
|
||||||
case SELECT_ALL: send_context_menu_action(android.R.id.selectAll); break;
|
case SELECT_ALL: send_context_menu_action(android.R.id.selectAll); break;
|
||||||
case SHARE: send_context_menu_action(android.R.id.shareText); break;
|
case SHARE: send_context_menu_action(android.R.id.shareText); break;
|
||||||
case PASTE_PLAIN: send_context_menu_action(android.R.id.pasteAsPlainText); break;
|
case PASTE_PLAIN: send_context_menu_action(android.R.id.pasteAsPlainText); break;
|
||||||
@@ -261,7 +266,7 @@ public final class KeyEventHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** [r] might be negative, in which case the direction is reversed. */
|
/** [r] might be negative, in which case the direction is reversed. */
|
||||||
void handle_slider(KeyValue.Slider s, int r)
|
void handle_slider(KeyValue.Slider s, int r, boolean key_down)
|
||||||
{
|
{
|
||||||
switch (s)
|
switch (s)
|
||||||
{
|
{
|
||||||
@@ -269,8 +274,8 @@ public final class KeyEventHandler
|
|||||||
case Cursor_right: move_cursor(r); break;
|
case Cursor_right: move_cursor(r); break;
|
||||||
case Cursor_up: move_cursor_vertical(-r); break;
|
case Cursor_up: move_cursor_vertical(-r); break;
|
||||||
case Cursor_down: move_cursor_vertical(r); break;
|
case Cursor_down: move_cursor_vertical(r); break;
|
||||||
case Selection_cursor_left: move_cursor_sel(r, true); break;
|
case Selection_cursor_left: move_cursor_sel(r, true, key_down); break;
|
||||||
case Selection_cursor_right: move_cursor_sel(r, false); break;
|
case Selection_cursor_right: move_cursor_sel(r, false, key_down); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -310,7 +315,7 @@ public final class KeyEventHandler
|
|||||||
|
|
||||||
/** Move one of the two side of a selection. If [sel_left] is true, the left
|
/** Move one of the two side of a selection. If [sel_left] is true, the left
|
||||||
position is moved, otherwise the right position is moved. */
|
position is moved, otherwise the right position is moved. */
|
||||||
void move_cursor_sel(int d, boolean sel_left)
|
void move_cursor_sel(int d, boolean sel_left, boolean key_down)
|
||||||
{
|
{
|
||||||
InputConnection conn = _recv.getCurrentInputConnection();
|
InputConnection conn = _recv.getCurrentInputConnection();
|
||||||
if (conn == null)
|
if (conn == null)
|
||||||
@@ -320,10 +325,17 @@ public final class KeyEventHandler
|
|||||||
{
|
{
|
||||||
int sel_start = et.selectionStart;
|
int sel_start = et.selectionStart;
|
||||||
int sel_end = et.selectionEnd;
|
int sel_end = et.selectionEnd;
|
||||||
boolean modify_sel_start = sel_left == (sel_start <= sel_end);
|
// Reorder the selection when the slider has just been pressed. The
|
||||||
|
// selection might have been reversed if one end crossed the other end
|
||||||
|
// with a previous slider.
|
||||||
|
if (key_down && sel_start > sel_end)
|
||||||
|
{
|
||||||
|
sel_start = et.selectionEnd;
|
||||||
|
sel_end = et.selectionStart;
|
||||||
|
}
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (modify_sel_start)
|
if (sel_left)
|
||||||
sel_start += d;
|
sel_start += d;
|
||||||
else
|
else
|
||||||
sel_end += d;
|
sel_end += d;
|
||||||
@@ -454,6 +466,13 @@ public final class KeyEventHandler
|
|||||||
_recv.selection_state_changed(false);
|
_recv.selection_state_changed(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean is_selection_not_empty()
|
||||||
|
{
|
||||||
|
InputConnection conn = _recv.getCurrentInputConnection();
|
||||||
|
if (conn == null) return false;
|
||||||
|
return (conn.getSelectedText(0) != null);
|
||||||
|
}
|
||||||
|
|
||||||
public static interface IReceiver
|
public static interface IReceiver
|
||||||
{
|
{
|
||||||
public void handle_event_key(KeyValue.Event ev);
|
public void handle_event_key(KeyValue.Event ev);
|
||||||
|
@@ -315,6 +315,7 @@ public class Keyboard2 extends InputMethodService
|
|||||||
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||||
// Allow to draw behind system bars
|
// Allow to draw behind system bars
|
||||||
wattrs.setFitInsetsTypes(0);
|
wattrs.setFitInsetsTypes(0);
|
||||||
|
window.setDecorFitsSystemWindows(false);
|
||||||
}
|
}
|
||||||
updateLayoutHeightOf(window, ViewGroup.LayoutParams.MATCH_PARENT);
|
updateLayoutHeightOf(window, ViewGroup.LayoutParams.MATCH_PARENT);
|
||||||
final View inputArea = window.findViewById(android.R.id.inputArea);
|
final View inputArea = window.findViewById(android.R.id.inputArea);
|
||||||
|
@@ -277,28 +277,13 @@ public class Keyboard2View extends View
|
|||||||
width = metrics.getBounds().width();
|
width = metrics.getBounds().width();
|
||||||
WindowInsets wi = metrics.getWindowInsets();
|
WindowInsets wi = metrics.getWindowInsets();
|
||||||
int insets_types =
|
int insets_types =
|
||||||
WindowInsets.Type.statusBars()
|
WindowInsets.Type.systemBars()
|
||||||
| WindowInsets.Type.displayCutout()
|
| WindowInsets.Type.displayCutout()
|
||||||
| WindowInsets.Type.mandatorySystemGestures()
|
| WindowInsets.Type.mandatorySystemGestures();
|
||||||
| WindowInsets.Type.navigationBars();
|
|
||||||
Insets insets = wi.getInsets(insets_types);
|
Insets insets = wi.getInsets(insets_types);
|
||||||
insets_left = insets.left;
|
insets_left = insets.left;
|
||||||
insets_right = insets.right;
|
insets_right = insets.right;
|
||||||
// On API 35, the keyboard is allowed to draw under the
|
insets_bottom = Math.max(insets.bottom, _config.bottomInsetMin);
|
||||||
// button-navigation bar but on lower APIs, it must be discounted from
|
|
||||||
// the width.
|
|
||||||
if (VERSION.SDK_INT < 35)
|
|
||||||
{
|
|
||||||
Insets nav_insets = wi.getInsets(WindowInsets.Type.navigationBars());
|
|
||||||
width -= nav_insets.left + nav_insets.right;
|
|
||||||
insets_left -= nav_insets.left;
|
|
||||||
insets_right -= nav_insets.right;
|
|
||||||
}
|
|
||||||
// [insets.bottom] doesn't take into account the buttons that appear in
|
|
||||||
// the gesture navigation bar when the IME is showing so ensure a minimum
|
|
||||||
// of margin is added.
|
|
||||||
if (VERSION.SDK_INT >= 35)
|
|
||||||
insets_bottom = Math.max(insets.bottom, _config.bottomInsetMin);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -336,9 +336,13 @@ public final class KeyboardData
|
|||||||
int status;
|
int status;
|
||||||
float h = attribute_float(parser, "height", 1f);
|
float h = attribute_float(parser, "height", 1f);
|
||||||
float shift = attribute_float(parser, "shift", 0f);
|
float shift = attribute_float(parser, "shift", 0f);
|
||||||
|
float scale = attribute_float(parser, "scale", 0f);
|
||||||
while (expect_tag(parser, "key"))
|
while (expect_tag(parser, "key"))
|
||||||
keys.add(Key.parse(parser));
|
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()
|
public Row copy()
|
||||||
|
@@ -108,7 +108,10 @@ public final class Pointers implements Handler.Callback
|
|||||||
{
|
{
|
||||||
// No existing pointer, latch the key.
|
// No existing pointer, latch the key.
|
||||||
if (latched)
|
if (latched)
|
||||||
|
{
|
||||||
add_fake_pointer(key, kv, lock);
|
add_fake_pointer(key, kv, lock);
|
||||||
|
_handler.onPointerFlagsChanged(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if ((ptr.flags & FLAG_P_FAKE) == 0)
|
else if ((ptr.flags & FLAG_P_FAKE) == 0)
|
||||||
{} // Key already latched but not by a fake ptr, do nothing.
|
{} // Key already latched but not by a fake ptr, do nothing.
|
||||||
@@ -118,6 +121,7 @@ public final class Pointers implements Handler.Callback
|
|||||||
removePtr(ptr);
|
removePtr(ptr);
|
||||||
if (latched)
|
if (latched)
|
||||||
add_fake_pointer(key, kv, lock);
|
add_fake_pointer(key, kv, lock);
|
||||||
|
_handler.onPointerFlagsChanged(false);
|
||||||
}
|
}
|
||||||
else if ((ptr.flags & FLAG_P_LOCKED) != 0)
|
else if ((ptr.flags & FLAG_P_LOCKED) != 0)
|
||||||
{} // Existing ptr is locked but [lock] is false, do not continue.
|
{} // Existing ptr is locked but [lock] is false, do not continue.
|
||||||
@@ -306,7 +310,6 @@ public final class Pointers implements Handler.Callback
|
|||||||
// Start sliding mode
|
// Start sliding mode
|
||||||
if (new_value.getKind() == KeyValue.Kind.Slider)
|
if (new_value.getKind() == KeyValue.Kind.Slider)
|
||||||
startSliding(ptr, x, y, dx, dy, new_value);
|
startSliding(ptr, x, y, dx, dy, new_value);
|
||||||
_handler.onPointerDown(new_value, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -469,7 +472,7 @@ public final class Pointers implements Handler.Callback
|
|||||||
stopLongPress(ptr);
|
stopLongPress(ptr);
|
||||||
ptr.flags |= FLAG_P_SLIDING;
|
ptr.flags |= FLAG_P_SLIDING;
|
||||||
ptr.sliding = new Sliding(x, y, dirx, diry, kv.getSlider());
|
ptr.sliding = new Sliding(x, y, dirx, diry, kv.getSlider());
|
||||||
_handler.onPointerHold(kv, ptr.modifiers);
|
_handler.onPointerDown(kv, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return the [FLAG_P_*] flags that correspond to pressing [kv]. */
|
/** Return the [FLAG_P_*] flags that correspond to pressing [kv]. */
|
||||||
@@ -605,6 +608,10 @@ public final class Pointers implements Handler.Callback
|
|||||||
static final float SPEED_SMOOTHING = 0.7f;
|
static final float SPEED_SMOOTHING = 0.7f;
|
||||||
/** Avoid absurdly large values. */
|
/** Avoid absurdly large values. */
|
||||||
static final float SPEED_MAX = 4.f;
|
static final float SPEED_MAX = 4.f;
|
||||||
|
/** Make vertical sliders slower. The intention is to make the up/down
|
||||||
|
slider slower, as we have less visibility and do smaller movements in
|
||||||
|
that direction. */
|
||||||
|
static final float SPEED_VERTICAL_MULT = 0.5f;
|
||||||
|
|
||||||
public void onTouchMove(Pointer ptr, float x, float y)
|
public void onTouchMove(Pointer ptr, float x, float y)
|
||||||
{
|
{
|
||||||
@@ -618,8 +625,9 @@ public final class Pointers implements Handler.Callback
|
|||||||
return;
|
return;
|
||||||
last_move_ms = System.currentTimeMillis();
|
last_move_ms = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
d += ((x - last_x) * direction_x + (y - last_y) * direction_y)
|
d += ((x - last_x) * speed * direction_x
|
||||||
* speed / _config.slide_step_px;
|
+ (y - last_y) * speed * SPEED_VERTICAL_MULT * direction_y)
|
||||||
|
/ _config.slide_step_px;
|
||||||
update_speed(travelled, x, y);
|
update_speed(travelled, x, y);
|
||||||
// Send an event when [abs(d)] exceeds [1].
|
// Send an event when [abs(d)] exceeds [1].
|
||||||
int d_ = (int)d;
|
int d_ = (int)d;
|
||||||
|
@@ -26,17 +26,17 @@
|
|||||||
<key key0="ж" key2="=" key3="+"/>
|
<key key0="ж" key2="=" key3="+"/>
|
||||||
<key key0="э" key2="|" key3="\\"/>
|
<key key0="э" key2="|" key3="\\"/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row scale="11">
|
||||||
<key width="1.18" key0="shift" key2="loc capslock"/>
|
<key width="1.22" key0="shift" key2="loc capslock"/>
|
||||||
<key width="0.96" key0="я"/>
|
<key key0="я"/>
|
||||||
<key width="0.96" key0="ч"/>
|
<key key0="ч"/>
|
||||||
<key width="0.96" key0="с"/>
|
<key key0="с"/>
|
||||||
<key width="0.96" key0="м"/>
|
<key key0="м"/>
|
||||||
<key width="0.96" key0="и" key1="loc і" key2="<" key3="."/>
|
<key key0="и" key1="loc і" key2="<" key3="."/>
|
||||||
<key width="0.96" key0="т" key2=">" key3=","/>
|
<key key0="т" key2=">" key3=","/>
|
||||||
<key width="0.96" key0="ь" key1="ъ" key2="\?" key3="/"/>
|
<key key0="ь" key1="ъ" key2="\?" key3="/"/>
|
||||||
<key width="0.96" key0="б" key2=":" key3=";"/>
|
<key key0="б" key2=":" key3=";"/>
|
||||||
<key width="0.96" key0="ю" key2=""" key3="'"/>
|
<key key0="ю" key2=""" key3="'"/>
|
||||||
<key width="1.18" key0="backspace" key2="delete"/>
|
<key width="1.22" key0="backspace" key2="delete"/>
|
||||||
</row>
|
</row>
|
||||||
</keyboard>
|
</keyboard>
|
||||||
|
43
srcs/layouts/cyrl_lynyertdz_mk.xml
Normal file
43
srcs/layouts/cyrl_lynyertdz_mk.xml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<keyboard name="ЉЊЕРТЅ (Македонски)" script="cyrillic">
|
||||||
|
<row scale="11">
|
||||||
|
<key key0="љ" key2="1" key4="esc"/>
|
||||||
|
<key key0="њ" key1="~" key2="2" key3="\@"/>
|
||||||
|
<key key0="е" key1="!" key2="3" key3="\#" key4="ѐ"/>
|
||||||
|
<key key0="р" key2="4" key3="$"/>
|
||||||
|
<key key0="т" key2="5" key3="%"/>
|
||||||
|
<key key0="ѕ" key2="6" key3="^"/>
|
||||||
|
<key key0="у" key2="7" key3="&"/>
|
||||||
|
<key key0="и" key2="8" key3="*" key4="ѝ"/>
|
||||||
|
<key key0="о" key2="9" key3="(" key4=")"/>
|
||||||
|
<key key0="п" key2="0" key3="[" key4="]"/>
|
||||||
|
<key key0="ш" key2="€" key3="{" key4="}"/>
|
||||||
|
</row>
|
||||||
|
<row scale="11">
|
||||||
|
<key key0="а" key1="tab"/>
|
||||||
|
<key key0="с"/>
|
||||||
|
<key key0="д"/>
|
||||||
|
<key key0="ф"/>
|
||||||
|
<key key0="г"/>
|
||||||
|
<key key0="х"/>
|
||||||
|
<key key0="ј"/>
|
||||||
|
<key key0="к"/>
|
||||||
|
<key key0="л" key2="|" key3="\\"/>
|
||||||
|
<key key0="ч" key2="-" key3="_"/>
|
||||||
|
<key key0="ќ" key2="=" key3="+"/>
|
||||||
|
</row>
|
||||||
|
<row scale="11">
|
||||||
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
|
<key key0="з"/>
|
||||||
|
<key key0="џ"/>
|
||||||
|
<key key0="ц"/>
|
||||||
|
<key key0="в" key2="<" key3="."/>
|
||||||
|
<key key0="б" key2=">" key3=","/>
|
||||||
|
<key key0="н" key2="\?" key3="/"/>
|
||||||
|
<key key0="м" key2=":" key3=";"/>
|
||||||
|
<key key0="ѓ" key2="`" key3="'"/>
|
||||||
|
<key key0="ж" key2="“" key3="„"/>
|
||||||
|
<key width="1.5" key0="backspace" key2="delete"/>
|
||||||
|
</row>
|
||||||
|
</keyboard>
|
||||||
|
|
@@ -26,17 +26,17 @@
|
|||||||
<key key0="ж" key7="0" />
|
<key key0="ж" key7="0" />
|
||||||
<key key0="э" key7="\?" key3="/" />
|
<key key0="э" key7="\?" key3="/" />
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row scale="11">
|
||||||
<key width="1.18" key0="shift" key2="loc capslock" />
|
<key width="1.22" key0="shift" key2="loc capslock" />
|
||||||
<key width="0.96" key0="я" key7="`" key8=";" />
|
<key key0="я" key7="`" key8=";" />
|
||||||
<key width="0.96" key0="ч" key7="*" key8=":" />
|
<key key0="ч" key7="*" key8=":" />
|
||||||
<key width="0.96" key0="с" key7="&" key8="\#" />
|
<key key0="с" key7="&" key8="\#" />
|
||||||
<key width="0.96" key0="м" key7="|" key8="\\" />
|
<key key0="м" key7="|" key8="\\" />
|
||||||
<key width="0.96" key0="и" key7="~" />
|
<key key0="и" key7="~" />
|
||||||
<key width="0.96" key0="т" key7="ц" />
|
<key key0="т" key7="ц" />
|
||||||
<key width="0.96" key0="ӣ" key3="<" key2=">" />
|
<key key0="ӣ" key3="<" key2=">" />
|
||||||
<key width="0.96" key0="б" key7="ъ" key8="ы" />
|
<key key0="б" key7="ъ" key8="ы" />
|
||||||
<key width="0.96" key0="ю" key7=""" key8="'"/>
|
<key key0="ю" key7=""" key8="'"/>
|
||||||
<key width="1.18" key0="." key7="," />
|
<key width="1.22" key0="." key7="," />
|
||||||
</row>
|
</row>
|
||||||
</keyboard>
|
</keyboard>
|
||||||
|
@@ -26,17 +26,17 @@
|
|||||||
<key key0="ж" key7="0" />
|
<key key0="ж" key7="0" />
|
||||||
<key key0="э" key7="/" key8="|" />
|
<key key0="э" key7="/" key8="|" />
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row scale="11">
|
||||||
<key width="1.18" key0="shift" />
|
<key width="1.22" key0="shift" />
|
||||||
<key width="0.96" key0="ꙗ" key7="combining_breve" key8=";" />
|
<key key0="ꙗ" key7="combining_breve" key8=";" />
|
||||||
<key width="0.96" key0="ч" key7="combining_pokrytie" key8=":" />
|
<key key0="ч" key7="combining_pokrytie" key8=":" />
|
||||||
<key width="0.96" key0="с" key7="combining_inverted_breve" key8="`" />
|
<key key0="с" key7="combining_inverted_breve" key8="`" />
|
||||||
<key width="0.96" key0="м" key7="ѭ" />
|
<key key0="м" key7="ѭ" />
|
||||||
<key width="0.96" key0="и" key7="combining_vertical_tilde" key8="-" />
|
<key key0="и" key7="combining_vertical_tilde" key8="-" />
|
||||||
<key width="0.96" key0="т" key7="\?" key8="\\" />
|
<key key0="т" key7="\?" key8="\\" />
|
||||||
<key width="0.96" key0="ц" key3="<" key2=">" />
|
<key key0="ц" key3="<" key2=">" />
|
||||||
<key width="0.96" key0="б" key3="(" key2=")" />
|
<key key0="б" key3="(" key2=")" />
|
||||||
<key width="0.96" key0="ю" key3="{" key2="}" />
|
<key key0="ю" key3="{" key2="}" />
|
||||||
<key width="1.18" key0="." key7="," key8="_" />
|
<key width="1.22" key0="." key7="," key8="_" />
|
||||||
</row>
|
</row>
|
||||||
</keyboard>
|
</keyboard>
|
||||||
|
@@ -1,22 +1,22 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<keyboard name="देवनागरी (हिंदी)-2" script="devanagari">
|
<keyboard name="देवनागरी (हिंदी)-2" script="devanagari">
|
||||||
<row>
|
<row scale="6.6">
|
||||||
<key shift="0.35" width="0.9" c="क" nw="ख" ne="घ" sw="ङ" se="ग"/>
|
<key shift="0.35" c="क" nw="ख" ne="घ" sw="ङ" se="ग"/>
|
||||||
<key width="0.9" c="च" nw="छ" ne="झ" sw="ञ" se="ज"/>
|
<key c="च" nw="छ" ne="झ" sw="ञ" se="ज"/>
|
||||||
<key width="0.9" c="ट" nw="ठ" ne="ढ" sw="ण" se="ड" anticircle="७" indication="७"/>
|
<key c="ट" nw="ठ" ne="ढ" sw="ण" se="ड" anticircle="७" indication="७"/>
|
||||||
<key width="0.9" c="त" nw="थ" ne="ध" sw="न" se="द" anticircle="८" indication="८"/>
|
<key c="त" nw="थ" ne="ध" sw="न" se="द" anticircle="८" indication="८"/>
|
||||||
<key width="0.9" c="प" nw="फ" ne="भ" sw="म" se="ब" anticircle="९" indication="९"/>
|
<key c="प" nw="फ" ne="भ" sw="म" se="ब" anticircle="९" indication="९"/>
|
||||||
<key width="0.9" c="र" nw="ज्ञ" ne="ल" sw="य" se="व"/>
|
<key c="र" nw="ज्ञ" ne="ल" sw="य" se="व"/>
|
||||||
<key width="0.9" c="ह" nw="श" ne="ळ" sw="स" se="ष"/>
|
<key c="ह" nw="श" ne="ळ" sw="स" se="ष"/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row scale="6.6">
|
||||||
<key shift="0.35" width="0.9" c="ा" nw="अ" ne="आ"/>
|
<key shift="0.35" c="ा" nw="अ" ne="आ"/>
|
||||||
<key width="0.9" c="ि" nw="इ"/>
|
<key c="ि" nw="इ"/>
|
||||||
<key width="0.9" c="ी" nw="ई" anticircle="४" indication="४"/>
|
<key c="ी" nw="ई" anticircle="४" indication="४"/>
|
||||||
<key width="0.9" c="ु" nw="उ" ne="ऊ" se="ू" anticircle="५" indication="५"/>
|
<key c="ु" nw="उ" ne="ऊ" se="ू" anticircle="५" indication="५"/>
|
||||||
<key width="0.9" c="े" nw="ए" ne="ऋ" se="ृ" anticircle="६" indication="६"/>
|
<key c="े" nw="ए" ne="ऋ" se="ृ" anticircle="६" indication="६"/>
|
||||||
<key width="0.9" c="ै" nw="ऐ" ne="ऌ" se="ॢ"/>
|
<key c="ै" nw="ऐ" ne="ऌ" se="ॢ"/>
|
||||||
<key width="0.9" c="ो" nw="ओ" ne="औ" se="ौ"/>
|
<key c="ो" nw="ओ" ne="औ" se="ौ"/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key c="ऽ" se="\@"/>
|
<key c="ऽ" se="\@"/>
|
||||||
|
@@ -14,17 +14,17 @@
|
|||||||
<key key0="פ" key2="0" key3="b)" key4="rlm"/>
|
<key key0="פ" key2="0" key3="b)" key4="rlm"/>
|
||||||
<key key0="backspace" key2="delete"/>
|
<key key0="backspace" key2="delete"/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row scale="11">
|
||||||
<key key0="ש" key2="`" key1="loc tab" key3="sindot_placeholder" key4="shindot_placeholder" width="1.333"/>
|
<key key0="ש" key2="`" key1="loc tab" key3="sindot_placeholder" key4="shindot_placeholder" width="1.30"/>
|
||||||
<key key0="ד" key1="~" width="1.0333"/>
|
<key key0="ד" key1="~"/>
|
||||||
<key key0="ג" key1="geresh" key2="gershayim" width="1.0333"/>
|
<key key0="ג" key1="geresh" key2="gershayim"/>
|
||||||
<key key0="כ" width="1.0333"/>
|
<key key0="כ"/>
|
||||||
<key key0="ע" width="1.0333"/>
|
<key key0="ע"/>
|
||||||
<key key0="י" key2="-" key3="_" key4="maqaf" width="1.0333"/>
|
<key key0="י" key2="-" key3="_" key4="maqaf"/>
|
||||||
<key key0="ח" key2="=" key3="+" width="1.0333"/>
|
<key key0="ח" key2="=" key3="+"/>
|
||||||
<key key0="ל" key2="b[" key3="b{" width="1.0333"/>
|
<key key0="ל" key2="b[" key3="b{"/>
|
||||||
<key key0="ך" key2="b]" key3="b}" width="1.0333"/>
|
<key key0="ך" key2="b]" key3="b}"/>
|
||||||
<key key0="ף" key2="," key3=""" key1=":" width="1.4006"/>
|
<key key0="ף" key2="," key3=""" key1=":" width="1.35"/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key key0="\\" key1="|" key2="shift" key3="loc capslock"/>
|
<key key0="\\" key1="|" key2="shift" key3="loc capslock"/>
|
||||||
|
@@ -1,29 +1,29 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!-- Inspired by the bépo layout, but adapted to smartphone -->
|
<!-- Inspired by the bépo layout, but adapted to smartphone -->
|
||||||
<keyboard name="BEPO (Français)" script="latin">
|
<keyboard name="BEPO (Français)" script="latin">
|
||||||
<row>
|
<row scale="11">
|
||||||
<key width="1.1" key0="b" key1="loc esc" key2="1" key4="|"/>
|
<key key0="b" key1="loc esc" key2="1" key4="|"/>
|
||||||
<key width="1.1" key0="é" key2="2" key4="è"/>
|
<key key0="é" key2="2" key4="è"/>
|
||||||
<key width="1.1" key0="p" key2="3"/>
|
<key key0="p" key2="3"/>
|
||||||
<key width="1.1" key0="o" key2="4" key4="accent_circonflexe"/>
|
<key key0="o" key2="4" key4="accent_circonflexe"/>
|
||||||
<key width="1.1" key0="v" key2="5" key4="{"/>
|
<key key0="v" key2="5" key4="{"/>
|
||||||
<key width="1.1" key0="d" key2="6" key4="}"/>
|
<key key0="d" key2="6" key4="}"/>
|
||||||
<key width="1.1" key0="l" key2="7" key4="("/>
|
<key key0="l" key2="7" key4="("/>
|
||||||
<key width="1.1" key0="j" key2="8" key4=")"/>
|
<key key0="j" key2="8" key4=")"/>
|
||||||
<key width="1.1" key0="z" key2="9" key4="["/>
|
<key key0="z" key2="9" key4="["/>
|
||||||
<key width="1.1" key0="w" key2="0" key4="]"/>
|
<key key0="w" key2="0" key4="]"/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row scale="11">
|
||||||
<key width="1.1" key0="a" key1="loc tab" key4="à"/>
|
<key key0="a" key1="loc tab" key4="à"/>
|
||||||
<key width="1.1" key0="u" key1="$" key4="ù"/>
|
<key key0="u" key1="$" key4="ù"/>
|
||||||
<key width="1.1" key0="i" key4="&"/>
|
<key key0="i" key4="&"/>
|
||||||
<key width="1.1" key0="e" key1="+" key2="accent_trema" key4="€"/>
|
<key key0="e" key1="+" key2="accent_trema" key4="€"/>
|
||||||
<key width="1.1" key0="c" key1="=" key4="ç"/>
|
<key key0="c" key1="=" key4="ç"/>
|
||||||
<key width="1.1" key0="t" key1="^" key4=";"/>
|
<key key0="t" key1="^" key4=";"/>
|
||||||
<key width="1.1" key0="s" key4="!"/>
|
<key key0="s" key4="!"/>
|
||||||
<key width="1.1" key0="r" key4="\?"/>
|
<key key0="r" key4="\?"/>
|
||||||
<key width="1.1" key0="n" key1="`" key2="'" key4=":"/>
|
<key key0="n" key1="`" key2="'" key4=":"/>
|
||||||
<key width="1.1" key0="m" key2="""/>
|
<key key0="m" key2="""/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock" key3="<"/>
|
<key width="1.5" key0="shift" key2="loc capslock" key3="<"/>
|
||||||
|
Reference in New Issue
Block a user