mirror of
https://github.com/fankes/termux-app.git
synced 2025-09-07 03:05:18 +08:00
Merge pull request #1869 from termux/ctrlspace
Add workaround property to fix ctrl+space on devices where this does not work
This commit is contained in:
@@ -255,20 +255,7 @@ public final class TerminalView extends View {
|
||||
|
||||
@Override
|
||||
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
|
||||
File propsFile = new File(getContext().getFilesDir() + "/home/.termux/termux.properties");
|
||||
if (!propsFile.exists())
|
||||
propsFile = new File(getContext().getFilesDir() + "/home/.config/termux/termux.properties");
|
||||
|
||||
Properties props = new Properties();
|
||||
try {
|
||||
if (propsFile.isFile() && propsFile.canRead()) {
|
||||
try (FileInputStream in = new FileInputStream(propsFile)) {
|
||||
props.load(new InputStreamReader(in, StandardCharsets.UTF_8));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("termux", "Error loading props", e);
|
||||
}
|
||||
Properties props = getProperties();
|
||||
|
||||
if (props.getProperty("enforce-char-based-input", "false").equals("true")) {
|
||||
// Some keyboards seems do not reset the internal state on TYPE_NULL.
|
||||
@@ -552,6 +539,8 @@ public final class TerminalView extends View {
|
||||
|
||||
@Override
|
||||
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
|
||||
Properties props = getProperties();
|
||||
|
||||
if (LOG_KEY_EVENTS)
|
||||
Log.i(EmulatorDebug.LOG_TAG, "onKeyPreIme(keyCode=" + keyCode + ", event=" + event + ")");
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK) {
|
||||
@@ -567,6 +556,11 @@ public final class TerminalView extends View {
|
||||
return onKeyUp(keyCode, event);
|
||||
}
|
||||
}
|
||||
} else if (props.getProperty("ctrl-space-workaround", "false").equals("true") &&
|
||||
keyCode == KeyEvent.KEYCODE_SPACE && event.isCtrlPressed()) {
|
||||
/* ctrl + space does not work on some ROMs without this workaround.
|
||||
However, this breaks it on devices where it works out of the box. */
|
||||
return onKeyDown(keyCode, event);
|
||||
}
|
||||
return super.onKeyPreIme(keyCode, event);
|
||||
}
|
||||
@@ -1544,6 +1538,34 @@ public final class TerminalView extends View {
|
||||
}
|
||||
}
|
||||
|
||||
private Properties getProperties() {
|
||||
File propsFile;
|
||||
Properties props = new Properties();
|
||||
String possiblePropLocations[] = {
|
||||
getContext().getFilesDir() + "/home/.termux/termux.properties",
|
||||
getContext().getFilesDir() + "/home/.config/termux/termux.properties"
|
||||
};
|
||||
|
||||
propsFile = new File(possiblePropLocations[0]);
|
||||
int i = 1;
|
||||
while (!propsFile.exists() && i <= possiblePropLocations.length) {
|
||||
propsFile = new File(possiblePropLocations[i]);
|
||||
i += 1;
|
||||
}
|
||||
|
||||
try {
|
||||
if (propsFile.isFile() && propsFile.canRead()) {
|
||||
try (FileInputStream in = new FileInputStream(propsFile)) {
|
||||
props.load(new InputStreamReader(in, StandardCharsets.UTF_8));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("termux", "Error loading props", e);
|
||||
}
|
||||
|
||||
return props;
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
@Override
|
||||
public void autofill(AutofillValue value) {
|
||||
|
Reference in New Issue
Block a user