mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-20 06:09:09 +00:00
add new groupId -1 for suppressing default popups e.g. on action or comma keys
fixes #1243
This commit is contained in:
parent
7e3657185f
commit
465fc86e61
2 changed files with 9 additions and 4 deletions
|
@ -56,11 +56,10 @@ sealed interface KeyData : AbstractKeyData {
|
||||||
fun copy(newType: KeyType? = type, newCode: Int = code, newLabel: String = label, newGroupId: Int = groupId,
|
fun copy(newType: KeyType? = type, newCode: Int = code, newLabel: String = label, newGroupId: Int = groupId,
|
||||||
newPopup: PopupSet<out AbstractKeyData> = popup, newWidth: Float = width, newLabelFlags: Int = labelFlags): KeyData
|
newPopup: PopupSet<out AbstractKeyData> = popup, newWidth: Float = width, newLabelFlags: Int = labelFlags): KeyData
|
||||||
|
|
||||||
// groups (currently) not supported
|
|
||||||
companion object {
|
companion object {
|
||||||
/**
|
/**
|
||||||
* Constant for the default group. If not otherwise specified, any key is automatically
|
* Constant for the default group. If not otherwise specified, any key is automatically
|
||||||
* assigned to this group.
|
* assigned to this group. Additional popup keys will be added for specific labels.
|
||||||
*/
|
*/
|
||||||
const val GROUP_DEFAULT: Int = 0
|
const val GROUP_DEFAULT: Int = 0
|
||||||
|
|
||||||
|
@ -82,6 +81,11 @@ sealed interface KeyData : AbstractKeyData {
|
||||||
*/
|
*/
|
||||||
const val GROUP_ENTER: Int = 3
|
const val GROUP_ENTER: Int = 3
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constant for the default key, but without assigning popups for special labels.
|
||||||
|
*/
|
||||||
|
const val GROUP_NO_DEFAULT_POPUP: Int = -1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constant for the enter modifier key group. Any key belonging to this group will get the
|
* Constant for the enter modifier key group. Any key belonging to this group will get the
|
||||||
* popups specified for "~kana" in the popup mapping.
|
* popups specified for "~kana" in the popup mapping.
|
||||||
|
@ -335,7 +339,7 @@ sealed interface KeyData : AbstractKeyData {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun compute(params: KeyboardParams): KeyData? {
|
override fun compute(params: KeyboardParams): KeyData? {
|
||||||
require(groupId in 0..GROUP_ENTER) { "only positive groupIds up to GROUP_ENTER are supported" }
|
require(groupId in GROUP_NO_DEFAULT_POPUP..GROUP_ENTER) { "only groupIds from -1 to 3 are supported" }
|
||||||
require(label.isNotEmpty() || type == KeyType.PLACEHOLDER || code != KeyCode.UNSPECIFIED) { "non-placeholder key has no code and no label" }
|
require(label.isNotEmpty() || type == KeyType.PLACEHOLDER || code != KeyCode.UNSPECIFIED) { "non-placeholder key has no code and no label" }
|
||||||
require(width >= 0f || width == -1f) { "illegal width $width" }
|
require(width >= 0f || width == -1f) { "illegal width $width" }
|
||||||
val newLabel = label.convertFlorisLabel().resolveStringLabel(params)
|
val newLabel = label.convertFlorisLabel().resolveStringLabel(params)
|
||||||
|
@ -541,6 +545,7 @@ sealed interface KeyData : AbstractKeyData {
|
||||||
if (groupId == GROUP_COMMA) return SimplePopups(getCommaPopupKeys(params))
|
if (groupId == GROUP_COMMA) return SimplePopups(getCommaPopupKeys(params))
|
||||||
if (groupId == GROUP_PERIOD) return SimplePopups(getPunctuationPopupKeys(params))
|
if (groupId == GROUP_PERIOD) return SimplePopups(getPunctuationPopupKeys(params))
|
||||||
if (groupId == GROUP_ENTER) return getActionKeyPopupKeys(params)
|
if (groupId == GROUP_ENTER) return getActionKeyPopupKeys(params)
|
||||||
|
if (groupId == GROUP_NO_DEFAULT_POPUP) return null
|
||||||
return when (label) {
|
return when (label) {
|
||||||
KeyLabel.COMMA -> SimplePopups(getCommaPopupKeys(params))
|
KeyLabel.COMMA -> SimplePopups(getCommaPopupKeys(params))
|
||||||
KeyLabel.PERIOD -> SimplePopups(getPunctuationPopupKeys(params))
|
KeyLabel.PERIOD -> SimplePopups(getPunctuationPopupKeys(params))
|
||||||
|
|
|
@ -58,7 +58,7 @@ If the layout has exactly 2 keys in the bottom row, these keys will replace comm
|
||||||
* `codePoints`: when multiple code points should be entered, only available for `multi_text_key`
|
* `codePoints`: when multiple code points should be entered, only available for `multi_text_key`
|
||||||
* `label`: text to display on the key, determined from code if empty
|
* `label`: text to display on the key, determined from code if empty
|
||||||
* There are some special values, see the [label section](#labels)
|
* There are some special values, see the [label section](#labels)
|
||||||
* `groupId`: which additional popup keys to show, `0` is default and does not add anything, `1` adds the comma popup keys, `2` adds the period popup keys, `3` adds the action key popup keys (looks awkward though)
|
* `groupId`: which additional popup keys to show, `0` is default and does not add anything, `1` adds the comma popup keys, `2` adds the period popup keys, `3` adds the action key popup keys (looks awkward though), `-1` suppresses additional popups based on the label
|
||||||
* `popup`: list of keys to add in the popup, e.g. `"label": ")", "popup": {"relevant": [{ "label": "." }]}` is a `)` key with a `.` popup
|
* `popup`: list of keys to add in the popup, e.g. `"label": ")", "popup": {"relevant": [{ "label": "." }]}` is a `)` key with a `.` popup
|
||||||
* Note that in popup keys, properties are ignored with the exception of `$`, `code`, `codePoints`, and `label`
|
* Note that in popup keys, properties are ignored with the exception of `$`, `code`, `codePoints`, and `label`
|
||||||
* When specifying a _selector_ key class in a popup key, it will be evaluated correctly (e.g. for changing popups dependent on shift state)
|
* When specifying a _selector_ key class in a popup key, it will be evaluated correctly (e.g. for changing popups dependent on shift state)
|
||||||
|
|
Loading…
Add table
Reference in a new issue