Revision control

Copy as Markdown

// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import QtQuick.VirtualKeyboard as VKB
import QtQuick.VirtualKeyboard.Components
// Custom layout that creates a QML InputMethod and exposes counters
KeyboardLayout {
id: root
// Provide an input method instance for this layout
property var im: VKB.InputMethod {
id: testIM
objectName: "testIM"
// Counters
property int inputModesCount: 0
property int setInputModeCount: 0
property int setTextCaseCount: 0
property int resetCount: 0
property int updateCount: 0
property int clearInputModeCount: 0
property int keyEventCount: 0
// Selection lists
property int selectionListsCount: 0
property int selectionListItemCountCount: 0
property int selectionListDataCount: 0
property int selectionListItemSelectedCount: 0
// Pattern recognition / traces
property int patternRecognitionModesCount: 0
property int traceBeginCount: 0
property int traceEndCount: 0
// Reselect / click on preedit
property int reselectCount: 0
property int clickPreeditTextCount: 0
function inputModes(locale) {
inputModesCount++
return [VKB.InputEngine.InputMode.Latin, VKB.InputEngine.InputMode.Numeric]
}
function setInputMode(locale, mode) {
setInputModeCount++
return true
}
function setTextCase(tc) {
setTextCaseCount++
return true
}
/* This is commented out on purpose to test regression on QTBUG-140521
function reset() {
resetCount++
}
*/
function update() {
updateCount++
}
function clearInputMode() {
clearInputModeCount++
}
function keyEvent(key, text, modifiers) {
keyEventCount++
return false
}
// --- Selection list API ---
function selectionLists() {
selectionListsCount++
// Advertise a candidate list (count may be zero)
return [VKB.SelectionListModel.Type.WordCandidateList]
}
function selectionListItemCount(type) {
selectionListItemCountCount++
return 0
}
function selectionListData(type, index, role) {
selectionListDataCount++
return null
}
function selectionListItemSelected(type, index) {
selectionListItemSelectedCount++
}
// --- Pattern recognition / traces ---
function patternRecognitionModes() {
patternRecognitionModesCount++
// No handwriting/swipe by default
return []
}
function traceBegin(traceId, patternRecognitionMode, traceCaptureDeviceInfo, traceScreenInfo) {
traceBeginCount++
// Not accepting traces -> return null
return null
}
function traceEnd(trace) {
traceEndCount++
return false
}
// --- Reselect / click in preedit ---
function reselect(cursorPosition, reselectFlags) {
reselectCount++
return false
}
function clickPreeditText(cursorPosition) {
clickPreeditTextCount++
return false
}
}
// Bind the custom input method for this layout
inputMethod: im
// Minimal visible key to ensure the layout is valid
KeyboardRow {
Key { objectName: "testKeyA"; key: Qt.Key_A; text: "a" }
}
}