futo-org / android-keyboard Goto Github PK
View Code? Open in Web Editor NEWOffical FUTO Keyboard Issue Tracker and Source Mirror of https://gitlab.futo.org/keyboard/latinime
License: Other
Offical FUTO Keyboard Issue Tracker and Source Mirror of https://gitlab.futo.org/keyboard/latinime
License: Other
In certain fields in apps, swipe typing doesn't function, where no matter where you swipe, nothing happens. Video below:
Hello, I find the symbol hints rather small and often struggle to tell them apart in less than ideal lighting. Bit bigger would be nice.
Cheers.
While phone's are getting bigger the displayed keyboard is also getting bigger but not everyone needs a half screen keyboard on a 7 inch screen
(Or even a 2.5 inch on a 5 inch screen)
Adjustable keyboard height or extra small, small,medium, large, options error be nice
The vowels on the Spanish keyboard with the HOLD functionality should default to having accents.
{"REPORT_ID":"7c50cb3a-c699-4ede-9500-2fa445da2e4f","APP_VERSION_CODE":10804,"APP_VERSION_NAME":"0.1.22","PACKAGE_NAME":"org.futo.inputmethod.latin","FILE_PATH":"\/data\/user\/0\/org.futo.inputmethod.latin\/files","PHONE_MODEL":"Redmi Note 9 Pro","BRAND":"Redmi","PRODUCT":"lineage_miatoll","ANDROID_VERSION":"13","BUILD":{"BOARD":"atoll","BOOTLOADER":"unknown","BRAND":"Redmi","CPU_ABI":"arm64-v8a","CPU_ABI2":"","DEVICE":"joyeuse","DISPLAY":"TQ3A.230901.001","FINGERPRINT":"Redmi\/joyeuse_global\/joyeuse:12\/RKQ1.211019.001\/V14.0.3.0.SJZMIXM:user\/release-keys","HARDWARE":"qcom","HOST":"android-build","ID":"TQ3A.230901.001","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"Xiaomi","MODEL":"Redmi Note 9 Pro","ODM_SKU":"nfc","PERMISSIONS_REVIEW_REQUIRED":true,"PRODUCT":"lineage_miatoll","RADIO":"unknown","SKU":"unknown","SOC_MANUFACTURER":"QTI","SOC_MODEL":"SM7125","SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":["arm64-v8a"],"SUPPORTED_ABIS":["arm64-v8a","armeabi-v7a","armeabi"],"TAGS":"release-keys","TIME":1697302097000,"TYPE":"user","UNKNOWN":"unknown","USER":"nobody","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"","CODENAME":"REL","INCREMENTAL":"94","KNOWN_CODENAMES":"{HoneycombMr1, HoneycombMr2, Lollipop, Kitkat, Tiramisu, Gingerbread, Cupcake, IceCreamSandwichMr1, JellyBean, IceCreamSandwich, LollipopMr1, M, N, O, P, Q, R, S, Sv2, Base, NMr1, OMr1, JellyBeanMr1, JellyBeanMr2, Donut, Froyo, GingerbreadMr1, EclairMr1, Honeycomb, Eclair01, KitkatWatch, Base11, Eclair}","MEDIA_PERFORMANCE_CLASS":0,"PREVIEW_SDK_FINGERPRINT":"REL","PREVIEW_SDK_INT":0,"RELEASE":"13","RELEASE_OR_CODENAME":"13","RELEASE_OR_PREVIEW_DISPLAY":"13","SDK":"33","SDK_INT":33,"SECURITY_PATCH":"2023-10-06"}},"TOTAL_MEM_SIZE":112419729408,"AVAILABLE_MEM_SIZE":45787176960,"BUILD_CONFIG":"N\/A","CUSTOM_DATA":{"defer_manual_update_until":"1720723809616","dismissedMigrateFdroidObtainiumNotice":"true","resource_VoiceInput_it_IT":"voiceinput_it_IT.bin","last_used_emoji":"π<|>π<|>π<|>π€·π»ββοΈ<|>π€¦π»ββοΈ<|>π<|>π<|>π<|>π€·π»ββοΈ<|>π€¦π»ββοΈ<|>π€¦π»ββοΈ<|>π€·π»ββοΈ<|>π€£<|>π€£<|>π€¦π»ββοΈ<|>π€¦π»ββοΈ<|>π<|>π€£<|>π€£<|>π€¦π»ββοΈ<|>π€£<|>π€£<|>π€£<|>π€£<|>π€£<|>π€£<|>π€·π»ββοΈ<|>π€¦π»ββοΈ<|>π€·π»ββοΈ<|>π€£<|>π€£<|>π€£<|>π€£<|>π€£<|>π€£<|>π
<|>π<|>π<|>π€·π»ββοΈ<|>","subtypes":"[it_IT:KeyboardLayoutSet=qwerty:]","last_update_check_failed":"true","last_version":"10804","prefer_bluetooth_recording":"false","activeThemeOption":"DynamicSystem","activeSubtype":"it_IT:KeyboardLayoutSet=qwerty:","keyHints":"true","verbose_progress":"true","keyboardHeightMultiplier":"0.9"},"IS_SILENT":false,"STACK_TRACE":"java.lang.IllegalArgumentException: The Whisper model could not be loaded from the given buffer\n\tat org.futo.voiceinput.shared.ggml.WhisperGGML.<init>(SourceFile:30)\n\tat org.futo.voiceinput.shared.types.ModelFileFile.loadGGML(SourceFile:40)\n\tat org.futo.voiceinput.shared.whisper.ModelManager.obtainModel(SourceFile:16)\n\tat org.futo.voiceinput.shared.whisper.MultiModelRunner$preload$2$1.invokeSuspend(SourceFile:14)\n\tat kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:9)\n\tat kotlinx.coroutines.DispatchedTask.run(SourceFile:115)\n\tat kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(SourceFile:92)\n\tSuppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@f553ec7, Dispatchers.Main.immediate]\n","INITIAL_CONFIGURATION":{"colorMode":5,"densityDpi":396,"fontScale":1,"fontWeightAdjustment":0,"hardKeyboardHidden":"HARDKEYBOARDHIDDEN_YES","keyboard":"KEYBOARD_NOKEYS","keyboardHidden":"KEYBOARDHIDDEN_NO","locale":"it_IT","mcc":222,"mnc":10,"navigation":"NAVIGATION_NONAV","navigationHidden":"NAVIGATIONHIDDEN_YES","orientation":"ORIENTATION_PORTRAIT","screenHeightDp":880,"screenLayout":"SCREENLAYOUT_SIZE_NORMAL+SCREENLAYOUT_LONG_YES+SCREENLAYOUT_LAYOUTDIR_LTR+SCREENLAYOUT_ROUND_NO","screenWidthDp":436,"seq":3015,"smallestScreenWidthDp":436,"touchscreen":"TOUCHSCREEN_FINGER","uiMode":"UI_MODE_TYPE_NORMAL+UI_MODE_NIGHT_NO","userSetLocale":false},"CRASH_CONFIGURATION":{"colorMode":5,"densityDpi":396,"fontScale":1,"fontWeightAdjustment":0,"hardKeyboardHidden":"HARDKEYBOARDHIDDEN_YES","keyboard":"KEYBOARD_NOKEYS","keyboardHidden":"KEYBOARDHIDDEN_NO","locale":"it_IT","mcc":222,"mnc":10,"navigation":"NAVIGATION_NONAV","navigationHidden":"NAVIGATIONHIDDEN_YES","orientation":"ORIENTATION_PORTRAIT","screenHeightDp":880,"screenLayout":"SCREENLAYOUT_SIZE_NORMAL+SCREENLAYOUT_LONG_YES+SCREENLAYOUT_LAYOUTDIR_LTR+SCREENLAYOUT_ROUND_NO","screenWidthDp":436,"seq":3015,"smallestScreenWidthDp":436,"touchscreen":"TOUCHSCREEN_FINGER","uiMode":"UI_MODE_TYPE_NORMAL+UI_MODE_NIGHT_NO","userSetLocale":false},"DISPLAY":{"0":{"currentSizeRange":{"smallest":[1080,1011],"largest":[2179,2179]},"flags":"FLAG_SUPPORTS_PROTECTED_BUFFERS+FLAG_SECURE","metrics":{"density":2.4750001430511475,"densityDpi":396,"scaledDensity":"x2.4750001","widthPixels":1080,"heightPixels":2179,"xdpi":397.56500244140625,"ydpi":395.843994140625},"realMetrics":{"density":2.4750001430511475,"densityDpi":396,"scaledDensity":"x2.4750001","widthPixels":1080,"heightPixels":2400,"xdpi":397.56500244140625,"ydpi":395.843994140625},"name":"Schermo incorporato","realSize":[1080,2400],"rectSize":[0,0,1080,2179],"size":[1080,2179],"rotation":"ROTATION_0","isValid":true,"orientation":0,"refreshRate":60.000003814697266,"height":2179,"width":1080,"pixelFormat":1}},"USER_COMMENT":"","USER_EMAIL":"","USER_APP_START_DATE":"2024-06-27T20:50:14.952+02:00","USER_CRASH_DATE":"2024-06-27T20:50:20.945+02:00","DUMPSYS_MEMINFO":"","LOGCAT":"06-27 20:50:13.736 V\/GraphicsEnvironment( 2614): Neither updatable production driver nor prerelease driver is supported.\n06-27 20:50:13.791 W\/Parcel ( 2614): Expecting binder but got null!\n06-27 20:50:13.816 W\/Parcel ( 2614): Expecting binder but got null!\n06-27 20:50:13.841 I\/AdrenoGLES-0( 2614): QUALCOMM build : 83a0eede45, If3f4a1ab82\n06-27 20:50:13.841 I\/AdrenoGLES-0( 2614): Build Date : 11\/18\/21\n06-27 20:50:13.841 I\/AdrenoGLES-0( 2614): OpenGL ES Shader Compiler Version: EV031.32.02.15\n06-27 20:50:13.841 I\/AdrenoGLES-0( 2614): Local Branch : \n06-27 20:50:13.841 I\/AdrenoGLES-0( 2614): Remote Branch : refs\/tags\/AU_LINUX_ANDROID_LA.UM.9.1.R1.11.00.00.604.070\n06-27 20:50:13.841 I\/AdrenoGLES-0( 2614): Remote Branch : NONE\n06-27 20:50:13.841 I\/AdrenoGLES-0( 2614): Reconstruct Branch : NOTHING\n06-27 20:50:13.841 I\/AdrenoGLES-0( 2614): Build Config : S P 10.0.6 AArch64\n06-27 20:50:13.841 I\/AdrenoGLES-0( 2614): Driver Path : \/vendor\/lib64\/egl\/libGLESv2_adreno.so\n06-27 20:50:13.846 I\/AdrenoGLES-0( 2614): PFP: 0x016ee190, ME: 0x00000000\n06-27 20:50:13.859 E\/OpenGLRenderer( 2614): Unable to match the desired swap behavior.\n06-27 20:50:13.866 I\/Gralloc4( 2614): Adding additional valid usage bits: 0x8202000\n06-27 20:50:13.912 E\/OpenGLRenderer( 2614): Unable to match the desired swap behavior.\n06-27 20:50:14.841 E\/putmethod.latin( 2651): Not starting debugger since process cannot load the jdwp agent.\n06-27 20:50:14.936 V\/GraphicsEnvironment( 2651): ANGLE Developer option for 'org.futo.inputmethod.latin' set to: 'default'\n06-27 20:50:14.937 V\/GraphicsEnvironment( 2651): ANGLE GameManagerService for org.futo.inputmethod.latin: false\n06-27 20:50:14.937 V\/GraphicsEnvironment( 2651): Neither updatable production driver nor prerelease driver is supported.\n06-27 20:50:14.947 I\/ACRA ( 2651): ACRA is enabled for org.futo.inputmethod.latin, initializing...\n06-27 20:50:14.957 D\/WM-WrkMgrInitializer( 2651): Initializing WorkManager with default configuration.\n06-27 20:50:14.960 D\/WM-PackageManagerHelper( 2651): Skipping component enablement for androidx.work.impl.background.systemjob.SystemJobService\n06-27 20:50:14.961 D\/WM-Schedulers( 2651): Created SystemJobScheduler and enabled SystemJobService\n06-27 20:50:14.970 I\/LatinIMELegacy( 2651): Hardware accelerated drawing: true\n06-27 20:50:15.016 W\/InputAttributes( 2651): No editor info for this field. Bug?\n06-27 20:50:15.021 I\/LatinIME:LogUtils( 2651): Dictionary info: dictionary = UserHistoryDictionary.it_IT ; version = 1718305385 ; date = 1719506799\n06-27 20:50:15.021 I\/LatinIME:LogUtils( 2651): Dictionary info: dictionary = userunigram.it_IT ; version = 1718301061 ; date = 1718301061\n06-27 20:50:15.022 D\/LanguageModelFacilitator( 2651): Starting processor\n06-27 20:50:15.025 I\/LatinIME:LogUtils( 2651): Dictionary info: dictionary = main:it ; version = 54 ; date = 1414726258\n06-27 20:50:15.028 I\/UpdateChecking( 2651): Job already scheduled, no need to do anything\n06-27 20:50:15.032 W\/InputAttributes( 2651): No editor info for this field. Bug?\n06-27 20:50:15.050 W\/Parcel ( 2651): Expecting binder but got null!\n06-27 20:50:17.043 I\/LatinIMELegacy( 2651): Timeout waiting for dictionary load\n06-27 20:50:19.294 D\/OpenGLRenderer( 2614): endAllActiveAnimators on 0xb4000070360fdf00 (RippleDrawable) with handle 0xb400006fce4df840\n06-27 20:50:19.366 I\/AdrenoGLES-0( 2651): QUALCOMM build : 83a0eede45, If3f4a1ab82\n06-27 20:50:19.366 I\/AdrenoGLES-0( 2651): Build Date : 11\/18\/21\n06-27 20:50:19.366 I\/AdrenoGLES-0( 2651): OpenGL ES Shader Compiler Version: EV031.32.02.15\n06-27 20:50:19.366 I\/AdrenoGLES-0( 2651): Local Branch : \n06-27 20:50:19.366 I\/AdrenoGLES-0( 2651): Remote Branch : refs\/tags\/AU_LINUX_ANDROID_LA.UM.9.1.R1.11.00.00.604.070\n06-27 20:50:19.366 I\/AdrenoGLES-0( 2651): Remote Branch : NONE\n06-27 20:50:19.366 I\/AdrenoGLES-0( 2651): Reconstruct Branch : NOTHING\n06-27 20:50:19.366 I\/AdrenoGLES-0( 2651): Build Config : S P 10.0.6 AArch64\n06-27 20:50:19.367 I\/AdrenoGLES-0( 2651): Driver Path : \/vendor\/lib64\/egl\/libGLESv2_adreno.so\n06-27 20:50:19.372 I\/AdrenoGLES-0( 2651): PFP: 0x016ee190, ME: 0x00000000\n06-27 20:50:19.389 E\/OpenGLRenderer( 2651): Unable to match the desired swap behavior.\n06-27 20:50:19.393 I\/Gralloc4( 2651): Adding additional valid usage bits: 0x8202000\n06-27 20:50:19.422 W\/LatinIME( 2651): Create input view\n06-27 20:50:19.483 I\/LatinIMELegacy( 2651): Starting input. Cursor position = 0,0\n06-27 20:50:19.603 D\/LanguageModelFacilitator( 2651): Calling closeInternalLocked on model due to seeming locale change\n06-27 20:50:19.604 D\/LanguageModelFacilitator( 2651): no model for it\n06-27 20:50:20.273 D\/ProfileInstaller( 2651): Skipping profile installation for org.futo.inputmethod.latin\n06-27 20:50:20.571 D\/MediaCodecList( 2651): codecHandlesFormat: no format, so no extra checks\n06-27 20:50:20.571 D\/MediaCodecList( 2651): codecHandlesFormat: no format, so no extra checks\n06-27 20:50:20.571 D\/MediaCodecList( 2651): codecHandlesFormat: no format, so no extra checks\n06-27 20:50:20.572 D\/MediaCodecList( 2651): codecHandlesFormat: no format, so no extra checks\n06-27 20:50:20.574 I\/OMXClient( 2651): IOmx service obtained\n06-27 20:50:20.577 D\/MediaCodec( 2651): flushMediametrics\n06-27 20:50:20.592 I\/OMXClient( 2651): IOmx service obtained\n06-27 20:50:20.595 D\/MediaCodec( 2651): flushMediametrics\n06-27 20:50:20.602 D\/MediaCodec( 2651): flushMediametrics\n06-27 20:50:20.614 D\/MediaCodec( 2651): flushMediametrics\n06-27 20:50:20.706 D\/LOG_TAG ( 2651): WebRtcVad success\n06-27 20:50:20.706 I\/System.out( 2651): Resulting handle is -5476376666984957184\n06-27 20:50:20.737 I\/LatinIME: ( 2651): Attempting to load model from buffer...\n06-27 20:50:20.738 I\/LatinIME: ( 2651): whisper_init_from_buffer_with_params_no_state: loading model from buffer\n06-27 20:50:20.738 I\/LatinIME: ( 2651): whisper_model_load: loading model\n06-27 20:50:20.739 I\/LatinIME: ( 2651): whisper_model_load: n_vocab = 51865\n06-27 20:50:20.739 I\/LatinIME: ( 2651): whisper_model_load: n_audio_ctx = 1500\n06-27 20:50:20.740 I\/LatinIME: ( 2651): whisper_model_load: n_audio_state = 768\n06-27 20:50:20.740 I\/LatinIME: ( 2651): whisper_model_load: n_audio_head = 12\n06-27 20:50:20.740 I\/LatinIME: ( 2651): whisper_model_load: n_audio_layer = 12\n06-27 20:50:20.740 I\/LatinIME: ( 2651): whisper_model_load: n_text_ctx = 448\n06-27 20:50:20.740 I\/LatinIME: ( 2651): whisper_model_load: n_text_state = 768\n06-27 20:50:20.741 I\/LatinIME: ( 2651): whisper_model_load: n_text_head = 12\n06-27 20:50:20.741 I\/LatinIME: ( 2651): whisper_model_load: n_text_layer = 12\n06-27 20:50:20.741 I\/LatinIME: ( 2651): whisper_model_load: n_mels = 80\n06-27 20:50:20.741 I\/LatinIME: ( 2651): whisper_model_load: ftype = 7\n06-27 20:50:20.741 I\/LatinIME: ( 2651): whisper_model_load: qntvr = 2\n06-27 20:50:20.742 I\/LatinIME: ( 2651): whisper_model_load: type = 3 (small)\n06-27 20:50:20.809 I\/LatinIME: ( 2651): whisper_model_load: adding 1607 extra tokens\n06-27 20:50:20.810 I\/LatinIME: ( 2651): whisper_model_load: n_langs = 99\n06-27 20:50:20.811 I\/LatinIME: ( 2651): whisper_model_load: CPU buffer size = 277.87 MB\n06-27 20:50:20.875 I\/LatinIME: ( 2651): whisper_model_load: model size = 105.46 MB\n06-27 20:50:20.875 E\/LatinIME: ( 2651): whisper_model_load: ERROR not all tensors loaded from model file - expected 479, got 167\n06-27 20:50:20.876 E\/LatinIME: ( 2651): whisper_init_with_params_no_state: failed to load model\n06-27 20:50:20.898 E\/LatinIME: ( 2651): whisper_init_from_buffer_with_params: received null context\n06-27 20:50:20.898 E\/LatinIME: ( 2651): Failed to initialize whisper_context from direct buffer\n06-27 20:50:20.902 E\/ACRA ( 2651): ACRA caught a IllegalArgumentException for org.futo.inputmethod.latin\n06-27 20:50:20.902 E\/ACRA ( 2651): java.lang.IllegalArgumentException: The Whisper model could not be loaded from the given buffer\n06-27 20:50:20.902 E\/ACRA ( 2651): \tat org.futo.voiceinput.shared.ggml.WhisperGGML.<init>(SourceFile:30)\n06-27 20:50:20.902 E\/ACRA ( 2651): \tat org.futo.voiceinput.shared.types.ModelFileFile.loadGGML(SourceFile:40)\n06-27 20:50:20.902 E\/ACRA ( 2651): \tat org.futo.voiceinput.shared.whisper.ModelManager.obtainModel(SourceFile:16)\n06-27 20:50:20.902 E\/ACRA ( 2651): \tat org.futo.voiceinput.shared.whisper.MultiModelRunner$preload$2$1.invokeSuspend(SourceFile:14)\n06-27 20:50:20.902 E\/ACRA ( 2651): \tat kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:9)\n06-27 20:50:20.902 E\/ACRA ( 2651): \tat kotlinx.coroutines.DispatchedTask.run(SourceFile:115)\n06-27 20:50:20.902 E\/ACRA ( 2651): \tat kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(SourceFile:92)\n06-27 20:50:20.902 E\/ACRA ( 2651): \tSuppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@f553ec7, Dispatchers.Main.immediate]\n06-27 20:50:20.891 W\/logcat ( 2916): type=1400 audit(0.0:16887): avc: denied { read } for name=\"audio.primary.atoll.so\" dev=\"dm-1\" ino=842 scontext=u:r:untrusted_app:s0:c159,c258,c512,c768 tcontext=u:object_r:vendor_file:s0 tclass=file permissive=0 app=org.futo.inputmethod.latin\n","INSTALLATION_ID":"9b042c11-6c31-49e6-9093-1db11b542b02","DEVICE_FEATURES":{"android.hardware.sensor.proximity":true,"android.software.adoptable_storage":true,"android.hardware.sensor.accelerometer":true,"android.software.controls":true,"android.hardware.faketouch":true,"android.software.telecom":true,"android.hardware.telephony.subscription":true,"android.hardware.usb.accessory":true,"android.hardware.telephony.cdma":true,"android.hardware.telephony.data":true,"android.software.backup":true,"android.hardware.touchscreen":true,"android.hardware.touchscreen.multitouch":true,"android.software.print":true,"android.hardware.consumerir":true,"android.software.activities_on_secondary_displays":true,"android.hardware.wifi.rtt":true,"com.google.android.feature.PIXEL_2017_EXPERIENCE":true,"android.software.voice_recognizers":true,"android.software.picture_in_picture":true,"android.hardware.fingerprint":true,"android.hardware.sensor.gyroscope":true,"android.hardware.audio.low_latency":true,"android.software.vulkan.deqp.level":true,"android.software.cant_save_state":true,"com.google.android.feature.PIXEL_2018_EXPERIENCE":true,"android.hardware.security.model.compatible":true,"android.hardware.telephony.messaging":true,"android.hardware.telephony.calling":true,"android.hardware.opengles.aep":true,"org.lineageos.livedisplay":true,"org.lineageos.profiles":true,"android.hardware.bluetooth":true,"android.software.window_magnification":true,"android.hardware.telephony.radio.access":true,"android.hardware.camera.autofocus":true,"com.google.android.feature.GOOGLE_BUILD":true,"android.hardware.telephony.gsm":true,"android.hardware.telephony.ims":true,"android.software.incremental_delivery":true,"android.software.sip.voip":true,"android.hardware.se.omapi.ese":true,"android.software.opengles.deqp.level":true,"com.google.android.apps.photos.NEXUS_PRELOAD":true,"android.hardware.usb.host":true,"android.hardware.audio.output":true,"android.software.verified_boot":true,"android.hardware.camera.flash":true,"android.hardware.camera.front":true,"android.hardware.se.omapi.uicc":true,"android.hardware.screen.portrait":true,"android.hardware.nfc":true,"com.google.android.feature.TURBO_PRELOAD":true,"com.nxp.mifare":true,"android.hardware.sensor.stepdetector":true,"android.software.home_screen":true,"android.hardware.microphone":true,"android.software.autofill":true,"org.lineageos.hardware":true,"org.lineageos.globalactions":true,"android.software.securely_removes_users":true,"com.google.android.feature.PIXEL_EXPERIENCE":true,"android.hardware.bluetooth_le":true,"android.hardware.sensor.compass":true,"android.hardware.touchscreen.multitouch.jazzhand":true,"android.software.app_widgets":true,"android.software.input_methods":true,"android.hardware.sensor.light":true,"android.hardware.vulkan.version":true,"android.software.companion_device_setup":true,"android.software.device_admin":true,"com.google.android.feature.WELLBEING":true,"android.hardware.wifi.passpoint":true,"android.hardware.camera":true,"com.google.android.feature.ZERO_TOUCH":true,"org.lineageos.trust":true,"android.hardware.screen.landscape":true,"android.software.device_id_attestation":true,"android.hardware.ram.normal":true,"org.lineageos.health":true,"com.google.android.apps.photos.nexus_preload":true,"org.lineageos.android":true,"android.software.managed_users":true,"android.software.webview":true,"android.hardware.sensor.stepcounter":true,"android.hardware.camera.capability.manual_post_processing":true,"android.hardware.camera.any":true,"android.hardware.camera.capability.raw":true,"android.hardware.vulkan.compute":true,"android.hardware.touchscreen.multitouch.distinct":true,"android.hardware.location.network":true,"android.software.cts":true,"android.software.sip":true,"android.hardware.camera.capability.manual_sensor":true,"android.software.app_enumeration":true,"com.google.android.apps.dialer.SUPPORTED":true,"android.hardware.camera.level.full":true,"android.hardware.wifi.direct":true,"android.software.live_wallpaper":true,"com.google.android.feature.GOOGLE_EXPERIENCE":true,"android.software.ipsec_tunnels":true,"com.google.android.feature.EXCHANGE_6_2":true,"org.lineageos.settings":true,"android.hardware.audio.pro":true,"android.hardware.nfc.hcef":true,"android.hardware.nfc.uicc":true,"android.hardware.location.gps":true,"android.sofware.nfc.beam":true,"android.software.midi":true,"android.hardware.nfc.any":true,"android.hardware.nfc.hce":true,"android.hardware.wifi":true,"android.hardware.location":true,"android.hardware.vulkan.level":true,"android.hardware.wifi.aware":true,"android.software.secure_lock_screen":true,"android.hardware.biometrics.face":true,"android.hardware.telephony":true,"android.software.file_based_encryption":true,"glEsVersion":"3.2"},"ENVIRONMENT":null,"SHARED_PREFERENCES":{"default":{"vibrate_on":false,"pref_vibration_duration_settings":-1,"pref_enable_number_row":false}}}
Right now, if you press hold on the space bar, it will pop up an option to change keyboard language. The issue is that, more often than not, when trying to use the "cursor scroll on spacebar swipe" feature, it pops up the keyboard switch dialog instead.
Being able to scroll back and forth by swiping on the keyboard is a key feature found in FUTO and also other keyboards, however with the dialogue poping up half the time it is very annoying to use.
A simple option to not have the language switcher on the spacebar would be great to allow swipe to scroll to work correctly.
Coming from Swiftkey, I'm finding a huge usability miss when trying to upper/lowercase a word
If I type a word and the cursor is at the end of that word, I would like if the shift button (capitalize button?) uppercased the word, and inversely if the word is already uppercased, lowercase it
Some search fields, specifically ones that don't generate suggestions in the keyboard, also will not type anything via swiping. Video provided:
I'd like to replace the emoji key with a one tap language switcher that rotates through all languages. I have a similar use case like #38. But I think this is much easier to solve so this would be particularly useful to me until the multi language is implemented.
One of the features I like most about keyboards is holding down the space bar to move the cursor.
Sorry to clutter the Issues page with a question, but I guess you could call the current license an "issue" that has so far prevented me from paying...
Are there any plans to adopt FUTO's newly-released GrayJay Core License?
Γ is used very often in Brazilian so having it as part of the default keyboard layout is something I'd consider vital for day to day usage
Currently (ver. 0.1.21), in the long press menus for wowels the first options are symbols (as shown in the pictures). This is a bit annoying, as Hungarian uses a lot of wowels with accent marks, and greatly reduces productivity. It would improve the experience for Hungarian massively, if the following changes would be implemented:
Instead of the symbols, these wowels should be first in the long press menu:
E -> Γ
U -> Γ, Γ, Ε°
I -> Γ
O -> Γ, Γ, Ε
A -> Γ
Basically the same as in the keyboards of Google and Samsung.
The backspace vibrates for each character when long pressing it from the text editor menu, but not from the main view of the keyboard.
It'll be better to have a toggle for this since I people may want one or the other.
I write in spanish and english frequently. In Gboard and florisboard you can use the same keyboard layout (spanish for example) to write in multiple languages and get corrections and suggestions for both or more languages. Currently in FUTO keyboard if I want to write something in english while on the spanish layout it will auto-correct the words to spanish.
I imagine that this could be fixed adding a function to reference multiple language dictionaries at the same time. Not necessarily linked to the current layout.
This is probably possible through the dictionary override feature, but it would be better if I could choose to add another of the existing language dictionaries directly from within the app.
Cheers!
I threw this into Antropic Claude 3 Haiku to better explain the feature.
"trackpad" or "cursor control" feature on smartphones. This allows you to use the keyboard as a mini trackpad to precisely position the cursor when typing.
On iPhones, this feature is called "Cursor Control" and it works by long-pressing on the spacebar to activate the trackpad mode. You can then slide your finger around the keyboard area to move the cursor.
Many Android smartphones also have a similar feature, often referred to as "Keyboard Trackpad" or "Cursor Control." The exact implementation may vary by device, but the general functionality is the same - long-pressing the spacebar activates a mini trackpad on the keyboard for precise cursor positioning.
This feature is very handy for editing text, moving the cursor to a specific spot, or making corrections without having to tap directly on the screen. It's a useful productivity enhancement for mobile typing.
Man I loved the new update bit there is no Urdu language kind of bummer
But keep up the good work, I hope you guys can add Urdu as soon as possible
Thank you for creating this amazing product.
For some reason, the dynamic system theme is always identical to the dynamic dark theme for me, even when the OS is in light mode.
Pixel 8 Pro, GrapheneOS 14, build 2024050900.
If you tap a text suggestion while the cursor is being moved by the space bar or backspace cursor control it fails to replace the word with the suggestion, also if you use backspace cursor control but don't actually delete anything it fails to replace it.
The video below contains 3 instances of the bug.
[
](url)
Hi,
I just installed the 0.1.18 version from the playstore.
Everything was fine until I changed the default keyboard to futo's.
Every time I try to open the keyboard, it crashes with no explanation.
I am on android 11, I tried to select both the english and french versions in the keyboard list with the same result.
Also the "keyboard button on navigation bar" is enabled in my android settings, if that can be relevant.
Do you have an idea about what could be causing this crash or where I can find the logs?
To improve the user experience, please redesign the emoji panel To this design:
As this design makes it easier for the user to reach the buttons, especially if the person uses one hand
Keyboard is really promising testing it out rn, would be really nice to have adjustable width setting to make one hand mode since most phones are really big for one hand , iOS iPhone app would be great too! Thanks for the app , app seems quite stable for an alpha looking forward for more features and development.
It'll be nice to have a select all text button on the action bar to make deleting large amounts of text easier than having to swipe on the delete button multiple times or going into text editor mode and holding down the left key after selecting the highlight and jump by word buttons.
FlorisBoard is an example keyboard with this feature
When I make the Android language to Arabic, the toolbar items can't drag and drop correctly
These keys are very useful, especially for Emacs users, and would be great to have them as a long press key, dedicated, or even also like now we have the arrows, redo/undo, copy/paste.. in a dedicated row. In such case, I would prefer it not as big as it currently is.. maybe just the height of a letters row ^^
Attached 1 screenshot with the example of Unexpected Keyboard, where you slide to one angle, and you get 'Alt', 'Esc' and 'Tab', while the 'Ctrl' is a dedicated button.
When deleting text that was misspelled sometimes the keyboard removes the space between the previous two words. For example, if I were writing "and I went to the perk" and needed to change the 'e' in 'perk' to an 'a' for 'park' it would so this as I'm deleting. "And I went to theprk" after I delete the 'e'.
Most of my updates come from your F-Droid Repository, or I have a list to check in my web browser or it's an off line Device and I update manually
So it would be nice of I could remove the
"Please tap for updates" forever
Adding my vote for japanese language which I'm currently missing.
I'm using the FUTO keyboard on my tablet, and it's annoying that in some applications there isn't a button to keep the keyboard hidden.
It would be nice if the keyboard could be hidden without hiding the suggestions.
The symbol hints doesn't match what will pop up or the ?123 Layout
Example german
A hint is @
A popup is Γ€
A ?123 is @
D hint is $
D popup is $
D ?123 is β¬
There are two huge issues with Base AOSP keyboard, which is used as a base for FUTO keyboard:
I dont know how you can deal with general sluggishness without rewriting big chunks keyboard codebase. The fact that smartphones that are able to render PS3 level games an 3D graphics are not snappy as hell when typing and lag on keyboard gestures is kinda embarrasing. FlorisBoard is a goog example to compare you keyboard to. FlBd is not an AOSP fork and it is considerably snappier, more responsive and silky smooth on gestures most of the time.
As for the features - if you are aiming to become β1 FOSS/Source first keyboard, you should reach feature-parity with FlorisBoard. Aside from swipe-input and and intellectual suggestions, Floris board is β1 Android keyboard when it comes to speed and feature-compleetness. I think there is no point at listing all FlorisBoard features here (many of which are already suggested in othe feature-requests), so i'll just provide a link to a project web-site
P.S. Can you List FlorisBoard as a compatible option for FUTO voice input if possible. FlorisBoard is a superb and megapopular keyboard on f-droid and it is compatible with your voice input.
It would be great to be able to access (and modify) the system clipboard instead of only the most recently copied item.
This is usable:
Also, this is the way that GBboard works by default, plus the spacebar swipe cursor move acts this way.
Additional idea: keep erasing by character for the first word, then, when the first word is entirely erased, start erasing by word. Or some kind of "accelerated sensitivity" - the more you've already erased, the more you'll erase with each additional millimeter of finger movement.
In the Arabic layout, the size of the backspace button is small, please enlarge its size
futo keyboard :
Even after changing the height of the keyboard, the backspace button is equal in size to other buttons, the backspace button is supposed to be the largest of the other buttons and not equal to their size :
While in the HeliBoard keyboard, the backspace button is large in size and is not equal to the size of the other buttons
Phone: Pixel 6 Pro
OS: Graphene OS (build 2024062700)
FUTO Keyboard version: 0.1.22 (versionCode 10804)
It seems that the list of languages which is automatically added (presumably based on the list of languages configured on the device) shows unnecessary locale related codes at the end.
On my device I had the following selected under System Settings -> System -> Languages:
My timezone is set to automatic (GMT+1) but I doubt it's that.
Please note that the extra text is not shown if I manually add a language in the FUTO keyboard settings, it only shows for language automatically added after a fresh install, and it shows as the default value in the dropdown to pick your language.
Please add an option to Offset the keyboard from the right and left side such as the SwiftKey keyboard
My one critical feature usecase to migrate to this key card provider is Dvorak keyboard layouts. I love what Futo is developing and look forward to this being supported.
If it helps with "why":
Priorities in my case: US English, Spanish, German.
Im a samsung user and i hate the samsung keyboard, im gonna uninstall it using canta from F-droid and im hoping to use futo as my default keyboard
I understand that FUTO keyboard already have QWERTY keyboard in Vietnamese language.
I don't want to hold letters to open the extra character in the keyboard.
Most if not all Vietnamese use Telex or VNI on PC.
Telex Vietnamese is easier to use on a virtual keyboard.
When swiping from the symbols button or the caps button, if you touch a button that uses cursor control it breaks and gets stuck
Solution idea:
Disable cursor control gestures for space bar and backspace when any other gesture is active
When typing in the Android reddit app. If you mistype and have to backspace to erase your mistake, futo keyboard also deletes the space before the word even when your nowhere near that space.
Using other keysboard in the same app doesn't do this so this. So does appear to be a bug in the futo keyboard.
I have a pixel fold and one nice feature of the google keyboard is it splits half and is clustered on the left and right side of the screen when unfolded. It helps greatly reduce finger travel and makes typing more ergonomic.
I'd love to see emoji search support. Right now I have to scroll through all the emojis to find what I'm looking for if it's not my recents.
On the Spanish keyboard layout I am experiencing from time to time a bug which makes it start writing with CAPS on. This happens when I switch between apps or minimize the keyboard and then start writing again. The bug does not occur always but rather frequently.
The remedy is to either press shift twice to exit CAPS or backspace deleting everything and start writing again, after which the keyboard correctly capitalizes only the first letter.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.