| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- // Copyright (C) 2016 The Qt Company Ltd.
- // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
- import QtQuick
- import QtQuick.VirtualKeyboard as VKB
- VKB.InputMethod {
- property string multitapSequence
- property int multitapIndex: -1
- onMultitapSequenceChanged: selectionListChanged(VKB.SelectionListModel.Type.WordCandidateList)
- onMultitapIndexChanged: selectionListActiveItemChanged(VKB.SelectionListModel.Type.WordCandidateList, multitapIndex)
- property variant multiTapTimer: Timer {
- interval: 1200
- onTriggered: {
- update()
- }
- }
- function inputModes(locale) {
- return [VKB.InputEngine.InputMode.Latin, VKB.InputEngine.InputMode.Numeric, VKB.InputEngine.InputMode.Dialable];
- }
- function setInputMode(locale, inputMode) {
- return true
- }
- function setTextCase(textCase) {
- return true
- }
- function reset() {
- multiTapTimer.stop()
- multitapIndex = -1
- multitapSequence = ""
- }
- function update() {
- multiTapTimer.stop()
- multitapIndex = -1
- multitapSequence = ""
- if (inputContext !== null && inputContext.preeditText.length > 0) {
- inputContext.commit()
- }
- }
- function keyEvent(key, text, modifiers) {
- var accept = false
- switch (key) {
- case Qt.Key_Enter:
- case Qt.Key_Return:
- case Qt.Key_Tab:
- update()
- break
- case Qt.Key_Backspace:
- if (inputContext.preeditText.length > 0) {
- inputContext.clear()
- update()
- accept = true
- }
- break
- default:
- if (key !== inputEngine.previousKey) {
- update()
- }
- multitapSequence = text
- if (multitapSequence.length > 1) {
- multitapIndex = multiTapTimer.running ? (multitapIndex + 1) % multitapSequence.length : 0
- inputContext.preeditText = multitapSequence.charAt(multitapIndex)
- multiTapTimer.restart()
- } else {
- inputContext.commit(text)
- }
- accept = true
- break
- }
- return accept;
- }
- function selectionLists() {
- return [VKB.SelectionListModel.Type.WordCandidateList];
- }
- function selectionListItemCount(type) {
- return multitapSequence.length > 1 ? multitapSequence.length : 0
- }
- function selectionListData(type, index, role) {
- var result = null
- switch (role) {
- case VKB.SelectionListModel.Role.Display:
- result = multitapSequence.charAt(index)
- break
- default:
- break
- }
- return result
- }
- function selectionListItemSelected(type, index) {
- multitapIndex = index
- inputContext.preeditText = multitapSequence.charAt(multitapIndex)
- update()
- }
- }
|