mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-08-17 21:21:18 +02:00
Compare commits
6 Commits
settings-h
...
sel-mode-f
Author | SHA1 | Date | |
---|---|---|---|
5d62cf7901 | |||
f9b844e988 | |||
6f0244a29e | |||
2a50a4a129 | |||
9ab099175d | |||
0445c310ad |
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": []
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
|
@ -320,10 +320,16 @@ public final class KeyEventHandler
|
||||
{
|
||||
int sel_start = et.selectionStart;
|
||||
int sel_end = et.selectionEnd;
|
||||
if (sel_left == (sel_start <= sel_end))
|
||||
sel_start += d;
|
||||
else
|
||||
sel_end += d;
|
||||
boolean modify_sel_start = sel_left == (sel_start <= sel_end);
|
||||
do
|
||||
{
|
||||
if (modify_sel_start)
|
||||
sel_start += d;
|
||||
else
|
||||
sel_end += d;
|
||||
// Move the cursor twice if moving it once would make the selection
|
||||
// empty and stop selection mode.
|
||||
} while (sel_start == sel_end);
|
||||
if (conn.setSelection(sel_start, sel_end))
|
||||
return; // Fallback to sending key events if [setSelection] failed
|
||||
}
|
||||
|
Reference in New Issue
Block a user