add option for narrower key gap

This commit is contained in:
Helium314 2023-08-14 19:16:43 +02:00
parent 77baaff462
commit ffa9a01a2b
17 changed files with 80 additions and 21 deletions

View file

@ -6,6 +6,7 @@ import android.widget.FrameLayout
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.dslul.openboard.inputmethod.latin.R import org.dslul.openboard.inputmethod.latin.R
import org.dslul.openboard.inputmethod.latin.settings.Settings
import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils
class ClipboardLayoutParams(res: Resources) { class ClipboardLayoutParams(res: Resources) {
@ -26,14 +27,21 @@ class ClipboardLayoutParams(res: Resources) {
val suggestionStripHeight = res.getDimensionPixelSize(R.dimen.config_suggestions_strip_height) val suggestionStripHeight = res.getDimensionPixelSize(R.dimen.config_suggestions_strip_height)
val defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res) val defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res)
if (Settings.getInstance().current.mNarrowKeyGaps) {
keyVerticalGap = res.getFraction(R.fraction.config_key_vertical_gap_holo_narrow,
defaultKeyboardHeight, defaultKeyboardHeight).toInt()
keyHorizontalGap = res.getFraction(R.fraction.config_key_horizontal_gap_holo_narrow,
defaultKeyboardWidth, defaultKeyboardWidth).toInt()
} else {
keyVerticalGap = res.getFraction(R.fraction.config_key_vertical_gap_holo, keyVerticalGap = res.getFraction(R.fraction.config_key_vertical_gap_holo,
defaultKeyboardHeight, defaultKeyboardHeight).toInt() defaultKeyboardHeight, defaultKeyboardHeight).toInt()
keyHorizontalGap = res.getFraction(R.fraction.config_key_horizontal_gap_holo,
defaultKeyboardWidth, defaultKeyboardWidth).toInt()
}
bottomPadding = res.getFraction(R.fraction.config_keyboard_bottom_padding_holo, bottomPadding = res.getFraction(R.fraction.config_keyboard_bottom_padding_holo,
defaultKeyboardHeight, defaultKeyboardHeight).toInt() defaultKeyboardHeight, defaultKeyboardHeight).toInt()
topPadding = res.getFraction(R.fraction.config_keyboard_top_padding_holo, topPadding = res.getFraction(R.fraction.config_keyboard_top_padding_holo,
defaultKeyboardHeight, defaultKeyboardHeight).toInt() defaultKeyboardHeight, defaultKeyboardHeight).toInt()
keyHorizontalGap = res.getFraction(R.fraction.config_key_horizontal_gap_holo,
defaultKeyboardWidth, defaultKeyboardWidth).toInt()
actionBarHeight = (defaultKeyboardHeight - bottomPadding - topPadding) / DEFAULT_KEYBOARD_ROWS - keyVerticalGap / 2 actionBarHeight = (defaultKeyboardHeight - bottomPadding - topPadding) / DEFAULT_KEYBOARD_ROWS - keyVerticalGap / 2
listHeight = defaultKeyboardHeight + suggestionStripHeight - actionBarHeight - bottomPadding listHeight = defaultKeyboardHeight + suggestionStripHeight - actionBarHeight - bottomPadding

View file

@ -22,7 +22,7 @@ import android.widget.LinearLayout;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.R;
import org.dslul.openboard.inputmethod.latin.settings.SettingsValues; import org.dslul.openboard.inputmethod.latin.settings.Settings;
import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils; import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils;
final class EmojiLayoutParams { final class EmojiLayoutParams {
@ -41,14 +41,21 @@ final class EmojiLayoutParams {
public EmojiLayoutParams(final Resources res) { public EmojiLayoutParams(final Resources res) {
final int defaultKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res); final int defaultKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
final int defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res); final int defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
if (Settings.getInstance().getCurrent().mNarrowKeyGaps) {
mKeyVerticalGap = (int) res.getFraction(R.fraction.config_key_vertical_gap_holo_narrow,
defaultKeyboardHeight, defaultKeyboardHeight);
mKeyHorizontalGap = (int) (res.getFraction(R.fraction.config_key_horizontal_gap_holo_narrow,
defaultKeyboardWidth, defaultKeyboardWidth));
} else {
mKeyVerticalGap = (int) res.getFraction(R.fraction.config_key_vertical_gap_holo, mKeyVerticalGap = (int) res.getFraction(R.fraction.config_key_vertical_gap_holo,
defaultKeyboardHeight, defaultKeyboardHeight); defaultKeyboardHeight, defaultKeyboardHeight);
mKeyHorizontalGap = (int) (res.getFraction(R.fraction.config_key_horizontal_gap_holo,
defaultKeyboardWidth, defaultKeyboardWidth));
}
mBottomPadding = (int) res.getFraction(R.fraction.config_keyboard_bottom_padding_holo, mBottomPadding = (int) res.getFraction(R.fraction.config_keyboard_bottom_padding_holo,
defaultKeyboardHeight, defaultKeyboardHeight); defaultKeyboardHeight, defaultKeyboardHeight);
mTopPadding = (int) res.getFraction(R.fraction.config_keyboard_top_padding_holo, mTopPadding = (int) res.getFraction(R.fraction.config_keyboard_top_padding_holo,
defaultKeyboardHeight, defaultKeyboardHeight); defaultKeyboardHeight, defaultKeyboardHeight);
mKeyHorizontalGap = (int) (res.getFraction(R.fraction.config_key_horizontal_gap_holo,
defaultKeyboardWidth, defaultKeyboardWidth));
mEmojiCategoryPageIdViewHeight = mEmojiCategoryPageIdViewHeight =
(int) (res.getDimension(R.dimen.config_emoji_category_page_id_height)); (int) (res.getDimension(R.dimen.config_emoji_category_page_id_height));
final int baseheight = defaultKeyboardHeight - mBottomPadding - mTopPadding final int baseheight = defaultKeyboardHeight - mBottomPadding - mTopPadding

View file

@ -35,6 +35,7 @@ import org.dslul.openboard.inputmethod.keyboard.KeyboardTheme;
import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.R;
import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.common.Constants;
import org.dslul.openboard.inputmethod.latin.common.StringUtils; import org.dslul.openboard.inputmethod.latin.common.StringUtils;
import org.dslul.openboard.inputmethod.latin.settings.Settings;
import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils; import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils;
import org.dslul.openboard.inputmethod.latin.utils.XmlParseUtils; import org.dslul.openboard.inputmethod.latin.utils.XmlParseUtils;
import org.dslul.openboard.inputmethod.latin.utils.XmlParseUtils.ParseException; import org.dslul.openboard.inputmethod.latin.utils.XmlParseUtils.ParseException;
@ -258,13 +259,22 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
params.mBaseWidth = baseWidth; params.mBaseWidth = baseWidth;
params.mDefaultKeyWidth = (int)keyAttr.getFraction(R.styleable.Keyboard_Key_keyWidth, params.mDefaultKeyWidth = (int)keyAttr.getFraction(R.styleable.Keyboard_Key_keyWidth,
baseWidth, baseWidth, baseWidth / DEFAULT_KEYBOARD_COLUMNS); baseWidth, baseWidth, baseWidth / DEFAULT_KEYBOARD_COLUMNS);
params.mHorizontalGap = (int)keyboardAttr.getFraction(
if (Settings.getInstance().getCurrent().mNarrowKeyGaps) {
params.mHorizontalGap = (int) keyboardAttr.getFraction(
R.styleable.Keyboard_horizontalGapNarrow, baseWidth, baseWidth, 0);
params.mVerticalGap = (int) keyboardAttr.getFraction(
R.styleable.Keyboard_verticalGapNarrow, height, height, 0);
} else {
params.mHorizontalGap = (int) keyboardAttr.getFraction(
R.styleable.Keyboard_horizontalGap, baseWidth, baseWidth, 0); R.styleable.Keyboard_horizontalGap, baseWidth, baseWidth, 0);
// TODO: Fix keyboard geometry calculation clearer. Historically vertical gap between // TODO: Fix keyboard geometry calculation clearer. Historically vertical gap between
// rows are determined based on the entire keyboard height including top and bottom // rows are determined based on the entire keyboard height including top and bottom
// paddings. // paddings.
params.mVerticalGap = (int)keyboardAttr.getFraction( params.mVerticalGap = (int) keyboardAttr.getFraction(
R.styleable.Keyboard_verticalGap, height, height, 0); R.styleable.Keyboard_verticalGap, height, height, 0);
}
final int baseHeight = params.mOccupiedHeight - params.mTopPadding final int baseHeight = params.mOccupiedHeight - params.mTopPadding
- params.mBottomPadding + params.mVerticalGap; - params.mBottomPadding + params.mVerticalGap;
params.mBaseHeight = baseHeight; params.mBaseHeight = baseHeight;

View file

@ -248,6 +248,10 @@ class AppearanceSettingsFragment : SubScreenFragment(), Preference.OnPreferenceC
.show() .show()
true true
} }
preferenceScreen.findPreference(Settings.PREF_NARROW_KEY_GAPS)?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, _ ->
needsReload = true
true
}
} }
private fun setupKeyboardHeight(prefKey: String, defaultValue: Float) { private fun setupKeyboardHeight(prefKey: String, defaultValue: Float) {

View file

@ -141,8 +141,10 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_CLIPBOARD_HISTORY_RETENTION_TIME = "pref_clipboard_history_retention_time"; public static final String PREF_CLIPBOARD_HISTORY_RETENTION_TIME = "pref_clipboard_history_retention_time";
public static final String PREF_SECONDARY_LOCALES = "pref_secondary_locales"; public static final String PREF_SECONDARY_LOCALES = "pref_secondary_locales";
public static final String PREF_ADD_TO_PERSONAL_DICTIONARY = "add_to_personal_dictionary"; public static final String PREF_ADD_TO_PERSONAL_DICTIONARY = "pref_add_to_personal_dictionary";
public static final String PREF_NAVBAR_COLOR = "navbar_color"; public static final String PREF_NAVBAR_COLOR = "pref_navbar_color";
public static final String PREF_NARROW_KEY_GAPS = "pref_narrow_key_gaps";
// This preference key is deprecated. Use {@link #PREF_SHOW_LANGUAGE_SWITCH_KEY} instead. // This preference key is deprecated. Use {@link #PREF_SHOW_LANGUAGE_SWITCH_KEY} instead.
// This is being used only for the backward compatibility. // This is being used only for the backward compatibility.

View file

@ -88,6 +88,7 @@ public class SettingsValues {
public final long mClipboardHistoryRetentionTime; public final long mClipboardHistoryRetentionTime;
public final boolean mOneHandedModeEnabled; public final boolean mOneHandedModeEnabled;
public final int mOneHandedModeGravity; public final int mOneHandedModeGravity;
public final boolean mNarrowKeyGaps;
public final List<Locale> mSecondaryLocales; public final List<Locale> mSecondaryLocales;
// Use bigrams to predict the next word when there is no input for it yet // Use bigrams to predict the next word when there is no input for it yet
public final boolean mBigramPredictionEnabled; public final boolean mBigramPredictionEnabled;
@ -259,6 +260,7 @@ public class SettingsValues {
mAddToPersonalDictionary = prefs.getBoolean(Settings.PREF_ADD_TO_PERSONAL_DICTIONARY, false); mAddToPersonalDictionary = prefs.getBoolean(Settings.PREF_ADD_TO_PERSONAL_DICTIONARY, false);
mUseContactsDictionary = prefs.getBoolean(AndroidSpellCheckerService.PREF_USE_CONTACTS_KEY, false); mUseContactsDictionary = prefs.getBoolean(AndroidSpellCheckerService.PREF_USE_CONTACTS_KEY, false);
mCustomNavBarColor = prefs.getBoolean(Settings.PREF_NAVBAR_COLOR, false); mCustomNavBarColor = prefs.getBoolean(Settings.PREF_NAVBAR_COLOR, false);
mNarrowKeyGaps = prefs.getBoolean(Settings.PREF_NARROW_KEY_GAPS, true);
} }
public boolean isMetricsLoggingEnabled() { public boolean isMetricsLoggingEnabled() {

View file

@ -37,6 +37,8 @@
<fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction>
<fraction name="config_key_vertical_gap_holo">5.368%p</fraction> <fraction name="config_key_vertical_gap_holo">5.368%p</fraction>
<fraction name="config_key_horizontal_gap_holo">1.020%p</fraction> <fraction name="config_key_horizontal_gap_holo">1.020%p</fraction>
<fraction name="config_key_vertical_gap_holo_narrow">5.368%p</fraction>
<fraction name="config_key_horizontal_gap_holo_narrow">1.020%p</fraction>
<!-- config_more_keys_keyboard_key_height x -0.5 --> <!-- config_more_keys_keyboard_key_height x -0.5 -->
<dimen name="config_more_keys_keyboard_vertical_correction_holo">-22.4dp</dimen> <dimen name="config_more_keys_keyboard_vertical_correction_holo">-22.4dp</dimen>
<dimen name="config_key_preview_offset_holo">1.6dp</dimen> <dimen name="config_key_preview_offset_holo">1.6dp</dimen>

View file

@ -31,6 +31,8 @@
<fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction>
<fraction name="config_key_vertical_gap_holo">4.5%p</fraction> <fraction name="config_key_vertical_gap_holo">4.5%p</fraction>
<fraction name="config_key_horizontal_gap_holo">0.9%p</fraction> <fraction name="config_key_horizontal_gap_holo">0.9%p</fraction>
<fraction name="config_key_vertical_gap_holo_narrow">4.5%p</fraction>
<fraction name="config_key_horizontal_gap_holo_narrow">0.9%p</fraction>
<fraction name="config_key_letter_ratio_holo">50%</fraction> <fraction name="config_key_letter_ratio_holo">50%</fraction>
<fraction name="config_key_letter_ratio_lxx">50%</fraction> <fraction name="config_key_letter_ratio_lxx">50%</fraction>

View file

@ -41,6 +41,8 @@
<fraction name="config_keyboard_bottom_padding_holo">4.0%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">4.0%p</fraction>
<fraction name="config_key_vertical_gap_holo">4.5%p</fraction> <fraction name="config_key_vertical_gap_holo">4.5%p</fraction>
<fraction name="config_key_horizontal_gap_holo">1.565%p</fraction> <fraction name="config_key_horizontal_gap_holo">1.565%p</fraction>
<fraction name="config_key_vertical_gap_holo_narrow">4.5%p</fraction>
<fraction name="config_key_horizontal_gap_holo_narrow">1.565%p</fraction>
<!-- config_more_keys_keyboard_key_height x -0.5 --> <!-- config_more_keys_keyboard_key_height x -0.5 -->
<dimen name="config_more_keys_keyboard_vertical_correction_holo">-31.5dp</dimen> <dimen name="config_more_keys_keyboard_vertical_correction_holo">-31.5dp</dimen>

View file

@ -29,6 +29,8 @@
<fraction name="config_keyboard_bottom_padding_holo">3.690%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">3.690%p</fraction>
<fraction name="config_key_vertical_gap_holo">3.690%p</fraction> <fraction name="config_key_vertical_gap_holo">3.690%p</fraction>
<fraction name="config_key_horizontal_gap_holo">1.030%p</fraction> <fraction name="config_key_horizontal_gap_holo">1.030%p</fraction>
<fraction name="config_key_vertical_gap_holo_narrow">3.690%p</fraction>
<fraction name="config_key_horizontal_gap_holo_narrow">1.030%p</fraction>
<dimen name="config_more_keys_keyboard_key_height">81.9dp</dimen> <dimen name="config_more_keys_keyboard_key_height">81.9dp</dimen>

View file

@ -30,6 +30,8 @@
<fraction name="config_keyboard_bottom_padding_holo">3.312%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">3.312%p</fraction>
<fraction name="config_key_vertical_gap_holo">3.312%p</fraction> <fraction name="config_key_vertical_gap_holo">3.312%p</fraction>
<fraction name="config_key_horizontal_gap_holo">1.066%p</fraction> <fraction name="config_key_horizontal_gap_holo">1.066%p</fraction>
<fraction name="config_key_vertical_gap_holo_narrow">3.312%p</fraction>
<fraction name="config_key_horizontal_gap_holo_narrow">1.066%p</fraction>
<!-- config_more_keys_keyboard_key_height x -0.5 --> <!-- config_more_keys_keyboard_key_height x -0.5 -->
<dimen name="config_more_keys_keyboard_vertical_correction_holo">-31.5dp</dimen> <dimen name="config_more_keys_keyboard_vertical_correction_holo">-31.5dp</dimen>

View file

@ -263,8 +263,12 @@
<attr name="rowHeight" format="dimension|fraction" /> <attr name="rowHeight" format="dimension|fraction" />
<!-- Default horizontal gap between keys, in the proportion of keyboard width. --> <!-- Default horizontal gap between keys, in the proportion of keyboard width. -->
<attr name="horizontalGap" format="fraction" /> <attr name="horizontalGap" format="fraction" />
<!-- Default horizontal gap between keys, in the proportion of keyboard width. -->
<attr name="horizontalGapNarrow" format="fraction" />
<!-- Default vertical gap between rows of keys, in the proportion of keyboard height. --> <!-- Default vertical gap between rows of keys, in the proportion of keyboard height. -->
<attr name="verticalGap" format="fraction" /> <attr name="verticalGap" format="fraction" />
<!-- Default vertical gap between rows of keys, in the proportion of keyboard height. -->
<attr name="verticalGapNarrow" format="fraction" />
<!-- More keys keyboard layout template --> <!-- More keys keyboard layout template -->
<attr name="moreKeysTemplate" format="reference" /> <attr name="moreKeysTemplate" format="reference" />
<!-- Icon set for key top and key preview. These should be aligned with <!-- Icon set for key top and key preview. These should be aligned with

View file

@ -41,8 +41,10 @@
<fraction name="config_keyboard_top_padding_holo">2.335%p</fraction> <fraction name="config_keyboard_top_padding_holo">2.335%p</fraction>
<fraction name="config_keyboard_bottom_padding_holo">4.669%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">4.669%p</fraction>
<fraction name="config_key_vertical_gap_holo">3.527%p</fraction> <fraction name="config_key_vertical_gap_holo">6.127%p</fraction>
<fraction name="config_key_horizontal_gap_holo">1.089%p</fraction> <fraction name="config_key_horizontal_gap_holo">1.739%p</fraction>
<fraction name="config_key_vertical_gap_holo_narrow">3.527%p</fraction>
<fraction name="config_key_horizontal_gap_holo_narrow">1.089%p</fraction>
<!-- config_more_keys_keyboard_key_height x -0.5 --> <!-- config_more_keys_keyboard_key_height x -0.5 -->
<dimen name="config_more_keys_keyboard_vertical_correction_holo">-26.4dp</dimen> <dimen name="config_more_keys_keyboard_vertical_correction_holo">-26.4dp</dimen>
<dimen name="config_key_preview_offset_holo">40.0dp</dimen> <dimen name="config_key_preview_offset_holo">40.0dp</dimen>

View file

@ -254,6 +254,8 @@
<string name="prefs_long_press_keyboard_to_change_lang_summary">Long pressing space key will prompt input method selection menu</string> <string name="prefs_long_press_keyboard_to_change_lang_summary">Long pressing space key will prompt input method selection menu</string>
<!-- Title of the settings to enable keyboard resizing --> <!-- Title of the settings to enable keyboard resizing -->
<string name="prefs_resize_keyboard">Enable keyboard resizing</string> <string name="prefs_resize_keyboard">Enable keyboard resizing</string>
<!-- Title of the setting for reduced distance between keys -->
<string name="prefs_narrow_key_gaps">Narrow key gaps</string>
<!-- Title of the settings for setting keyboard height --> <!-- Title of the settings for setting keyboard height -->
<string name="prefs_keyboard_height_scale">Keyboard height scale</string> <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
<!-- Title of the preference item for switching accounts [CHAR LIMIT=30] --> <!-- Title of the preference item for switching accounts [CHAR LIMIT=30] -->

View file

@ -25,7 +25,9 @@
<style name="Keyboard"> <style name="Keyboard">
<item name="rowHeight">25%p</item> <item name="rowHeight">25%p</item>
<item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item> <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item>
<item name="horizontalGapNarrow">@fraction/config_key_horizontal_gap_holo_narrow</item>
<item name="verticalGap">@fraction/config_key_vertical_gap_holo</item> <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item>
<item name="verticalGapNarrow">@fraction/config_key_vertical_gap_holo_narrow</item>
<item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item> <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
<item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item> <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item>
<item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item> <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item>

View file

@ -50,7 +50,7 @@
android:summary="@string/amoled_mode_summary"/> android:summary="@string/amoled_mode_summary"/>
<CheckBoxPreference <CheckBoxPreference
android:key="navbar_color" android:key="pref_navbar_color"
android:title="@string/theme_navbar"/> android:title="@string/theme_navbar"/>
<Preference <Preference
@ -80,6 +80,12 @@
android:defaultValue="false" android:defaultValue="false"
android:persistent="true" /> android:persistent="true" />
<CheckBoxPreference
android:key="pref_narrow_key_gaps"
android:title="@string/prefs_narrow_key_gaps"
android:defaultValue="true"
android:persistent="true" />
<org.dslul.openboard.inputmethod.latin.settings.SeekBarDialogPreference <org.dslul.openboard.inputmethod.latin.settings.SeekBarDialogPreference
android:dependency="pref_resize_keyboard" android:dependency="pref_resize_keyboard"
android:key="pref_keyboard_height_scale" android:key="pref_keyboard_height_scale"

View file

@ -96,7 +96,7 @@
android:persistent="true" /> android:persistent="true" />
<CheckBoxPreference <CheckBoxPreference
android:key="add_to_personal_dictionary" android:key="pref_add_to_personal_dictionary"
android:title="@string/add_to_personal_dictionary" android:title="@string/add_to_personal_dictionary"
android:summary="@string/add_to_personal_dictionary_summary" android:summary="@string/add_to_personal_dictionary_summary"
android:defaultValue="false" android:defaultValue="false"