Git Product home page Git Product logo

openboard's Introduction

OpenBoard

100% FOSS keyboard, based on AOSP.

GitHub Workflow Status Translation status Matrix

GitHub release (latest by date) F-Droid Version Google Play Version GitHub Release Date GitHub commits since latest release (by date)

Get it on F-Droid Get it on Google Play

Table of content

Community

Join our [matrix] channel here.

Matrix QR Code

Contribution ❤

Issue reporting

Whether you encountered a bug, or want to see a new feature in OpenBoard, you can contribute to the project by opening a new issue here. Your help is always welcomed !

Before opening a new issue, be sure to check the following :

  • Does the issue already exist ? Make sure a similar issue has not been reported by browsing existing issues.
  • Is the issue still relevant ? Make sure your issue is not already fixed in the latest version of OpenBoard.
  • Did you use the issue template ? It is important to make life of our kind contributors easier by avoiding issues that miss key informations to their resolution.

Please avoid opening issues to ask for a release date, for PR reviews/merges, for more activity on the project, or worth for more contributors. If you have any interrogations on these topics, read this comment from issue #619.

Translation

You can help in translating OpenBoard in your language through our Weblate project.

Translation status

Dictionary creation

To create or update a dictionary for your language, you can use this tool. You will need a wordlist, as described here. The output .dict file must be put in res/raw, and its wordlist in dictionaries.

For your dictionary to be merged into OpenBoard, you must provide the wordlist you used, as well as its license if any.

Code contribution

Getting started

OpenBoard project is based on Gradle and Android Gradle Plugin. To get started, you'll just need to install Android Studio, and import project 'from Version Control / Git / Github' by providing this git repository URL (or git SSH URL).

Once everything got setted up correctly, you're ready to go !

Guidelines

OpenBoard is a complex application, when contributing, you must take a step back and make sure your contribution :

  • Uses already in-place mechanism and take advantage of them. In other terms, does not reinvent the wheel or uses shortcuts that could alter the consistency of the existing code.
  • Has the lowest footprint possible. OpenBoard code has been written by android experts (AOSP/Google engineers). It has been tested and runned on millions of devices. Thus, existing code will always be safer than new code. The less we alter existing code, the more OpenBoard will stay stable. Especially in the input logic scope.
  • Does not bring any non-free code or proprietary binary blobs. This also applies to code/binaries with unknown licenses. Make sure you do not introduce any closed-source library from Google.
  • Complies with the user privacy principle OpenBoard follows.

In addition to previous elements, OpenBoard must stick to F-Droid inclusion guidelines.

Current TODO list

In no particular order, here is the non-exhaustive list of known wanted features :

  • Updated emoji support
  • MaterialYou (M3) support
  • One-handed mode feature
  • Android autofill support
  • Clipboard history feature
  • Text navigation/selection panel
  • Multi-locale typing
  • Emoji search
  • Emoji variant saving
  • Glide typing

Tooling

Edit keyboards content

Keyboards content is often a complex concatenation of data from global to specific locales. For example, additional keys of a given key, also known as 'more keys' in code, are determined by concatenating infos from : common additional keys for a layout (eg. numbers), global locale (eg. common symbols) and specific locale (eg. accents or specific letters).

To edit these infos, you'll need to generate the KeyboardTextsTable.java file. To do so :

  1. Make your modifications in tools/make-keyboard-text/src/main/resources/values-YOUR LOCALE.
  2. Generate the new version of KeyboardTextsTable.java by running Gradle task 'makeText' :
    ./gradlew tools:make-keyboard-text:makeText

Update emojis

See make-emoji-keys tool README.

License

OpenBoard project is licensed under GNU General Public License v3.0.

Permissions of this strong copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights.

See repo's LICENSE file.

Credits

openboard's People

Contributors

alexandrius avatar altonss avatar amcoder36 avatar bardock88 avatar boffire avatar chuckmichael avatar comradekingu avatar derhagen avatar dotsensei avatar dslul avatar giwrgosmant avatar helium314 avatar intxgo avatar jnnkb avatar kojid0 avatar majeurandroid avatar milotype avatar noscirep avatar pkshields avatar qw123wh avatar rhjihan avatar rustzz avatar sandsturm avatar sdwolfz avatar smarquespt avatar telema93 avatar tkterris avatar toniz4 avatar trev0r-sta avatar zmni avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openboard's Issues

Long-press vibration feedback

Currently when using long-press on a key, the only provided feedback is the popup content changing. It would be great if there would also be an option for vibration and/or sound feedback when the long-press time has passed and the secondary options are shown.

Explanation of Permissions

An explanation of permissions would be a useful thing to add to the README. Especially these:

  • view network connections
    Allows the app to view information about network connections such as which networks exist and are connected.
  • android.permission.DOWNLOAD_WITHOUT_NOTIFICATION

I'm guessing this is used for the downloading of additional dictionaries?

Missing word suggestion in Incognito Mode

When typing in a private/sensitive text field which has the flag "IME_FLAG_NO_PERSONALIZED_LEARNING", word suggestion is not available. This is the case in my Browser's Incognito Mode and in Telegram Secret Chats, for example.

IMO it should be available but should simply not learn new word predictions or next-word-suggestions.

Disable key pop-up when entering password/during login

Hi and thanks for this awesome work! Not too much to criticize so far except this one thing.
With the default setting of displaying the pop-up of the pressed key it is rather easy for someone to spy on your login passwords. No clue wether this is easy to do/possibble at all, but it would be awesome if the key pop-ups would be disabled automatically during login (or maybe even everywhere you have to type a password).

Support for glide typing?

AOSP keyboard have settings for glide typing but does not included in OpenBoard.

I know it's because glide typing require libjni_latinimegoogle.so the proprietary library (it can be extracted from OpenGApps Optional/swypelibs-lib-arm64.tar.lz).

But maybe consider add this feature to Play Store version by using product flavors? Since play store users probably already have GApps on their phone. and the repo does not need to include the proprietary library, f-droid flavor could just keep do not include glide typing support. Including such feature does not seems break anything if the OS does not have libjni_latinimegoogle.so.

I'm also trying to build LatinIME, but can't get glide typing works for me (but it works on LatinIME in LineageOS). it's a bit strange. so you may make sure at least it works on your devices if are about to support this feature.

Incognito mode

Would be nice to have a swtich or an option to turn on incognito mode.
Apps like signal and telegram use incognito mode keyboard for their chats windows but it doesn't turn on with this keyboard.

Improve suggestions

I use the german dictionary. I type the word "Ich" (which means "I", a very common word, that I used a lot) and this are the suggestions I got:

  • Och
  • Sich
  • Mich

I can bring many other examples:
Starts to type the word "Test" --> "Tes":

  • Tee
  • Ted
  • Tea

In other keyboard apps I often only to start the first 2 or 3 chars, and can build whole sentences without typing any car key. Only by selecting one suggestion after another. This is very fast.

  • Auto-correction off
  • Suggestions on
  • Personalised Suggestions on

[Feature request] Xperia Skin

First of all I want to thank you for your FOSS keyboard.
There is nothing to say how much it's important for the privacy nowadays.

I've searched for such project for a long time; in the past there was no other option than taking a good keyboard and debloating it.

And my choice was "Xperia keyboard" that have an exellent UIX design (the best until today, IMO), that's why many people love it so much.

The development was discontinued long time ago, so users have only the last version 8.1.A.0.12 and many mods based on this version.

So I want propose you to reproduce Xperia UI as additional skin, taking attention to the main nuances have made this keyboard so popular.
I'm not sure whether you interesting in that, but let me show you some pics and how design is really functional, intelligent and accurate.

As a references:

1. Shots of the real debloated, redesigned and symbols-extended mod

mod B  - EN
Xperia Keyboard

2. A new concept (not realized)

  • More darken background to provide more buttons contrast
  • Bottom line: new buttons compound (size, margins, order)
  • Increased font-size for . and , symbols (for clear-cut distinction)
  • Right/Left buttons added for cursor moving: [<] [Space] [>]

Xperia Keyboard - NEW Concept
This shot is (1:1), so you can download and look at it more closely.

May be you will like some ideas.

Additional languages

Some languages (like Bosnian) are not on the list. How does it work with adding them?
Gboard has tons and I'm not sure about AOSP.
As a workaround, I could use any other language definition, since the dictionaries seem to be empty. I.e. #18

Related: #24

Numbers row

It would be nice to have an option to enable/disable a row for numbers so long-pressing is not necessary.

Language preferences lost on upgrade

After the update today, I noticed that the language preferences are lost. The same has happened earlier when the device was reset but I didn't pay much attention at the time.
The selected theme is there but not the languages that were previously selected nor are the custom Dvorak layouts for languages shown in the list of languages to use.
The custom layouts can still be found in the Custom Layouts section. This corrects after some time (restart? can't remember).
Posting in case this is not an expected outcomes of the standard update.

Please publish the apk file here on GitHub

Hello first of all thank you for the great app. Please continue and don't give up. Many open source Android keyboards are dead for years.

Now there is finally an app again and hope it stays that way. Hope you will not leave us or switch to SwiftKey or other because of new employers.

When you release a new version. Can you add the apk file under GitHub releases?
https://github.com/dslul/openboard/releases

I don't use Google Play Store and F-droid is very slow with recent updates.

[Feature Request] Show suggestions after typing or selecting a word

It would be useful if the suggestions appear right after I finish typing a word or selectiong a word from the suggestions. Now the suggestions appers not until I start to type the next word.
I thought the option "Suggestions for the next word" in the settings would enable this function, but it doesn't.

Open settings from keyboard

Currently it has the settings shortcut but when I try to use it nothing happens. (Using it on MIUI 11, android 9, redmi 6)

Back arrow closes app

The back arrow (top left hand corner) closes the app instead of going back to main menu.
Also, the arrow should not be visible in main menu.

reduction of emojis

Hello,

can the number of emojis be reduced?
example people with skin colours, here you have to scroll for a long time. is a simple tap on the figure enough to choose the colour?

thanks :)

Consolidate emoji skin tones

The emoji list in this keyboard has the same issue as the AOSP keyboard: every emoji that has multiple skin tones available shows each skin tone as a separate item in the list. This makes the emoji list extremely cluttered and difficult to navigate. Other keyboards allow a long-press on the default yellow emoji to choose a skin tone. That might be the best approach. Or you could choose a default skin tone in the settings and only display that skin tone in the list.

multilanguage: autodetect typing language

Keyboards like Swiftkey allow usage with multiple languages without having to switch between them manually.
automatically detecting the language you're typing in for use with autocorrect.
This would be great to have for people that switch between multiple languages often.

Plan for long term maintenance

I'm not quite sure if the AOSP keyboard is getting any updates now that Google is basically deprecating all their open source apps, but how do you usually handle merging your changes with upstream? It might be nice to keep all (or at least most) changes as a list of patches that can be applied to a fresh clone of the AOSP keyboard.

Word suggestion disappears after completing the word

When typing a word completely, it disappears on the suggest panel.
E.g. write 'happiness' and watch how it gets suggested after your wirte 'happi' and then gets removed after completing the word 'happiness'.
I know that is it not 100% necessary to show a word that has been written correctly, but other keyboards work that way (e.g. Swiftkey) and it makes me a little confusing because usually I only focus on the 3 suggested words and now I also have to look at the field where I write the words. It leads to more eye movement which makes the whole typing process slower.
Maybe this could be an optional feature setting.

Support for Korean

add Korean support as its the main thing keeping me away from uwing it full time

App crash when opening keyboard

Since updating to 1.3, OpenBoard fails to open when selecting any text input area, and the phone says it has stopped. This is on an LG V64VL (Fiesta) running Android 7.0. I'd love to debug this further, but I have no idea how to get any kind of log or stacktrace from a phone.

*EDIT: I finally figured out how to get crash and bug stuff from remote debugging. Hopefully this is it:

--------- beginning of crash
01-27 09:23:42.232  3873  3873 E AndroidRuntime: FATAL EXCEPTION: main
01-27 09:23:42.232  3873  3873 E AndroidRuntime: Process: org.dslul.openboard.inputmethod.latin, PID: 3873
01-27 09:23:42.232  3873  3873 E AndroidRuntime: kotlin.KotlinNullPointerException
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.accessibility.KeyboardAccessibilityDelegate.setKeyboard(KeyboardAccessibilityDelegate.kt:53)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.accessibility.MainKeyboardAccessibilityDelegate.setKeyboard(MainKeyboardAccessibilityDelegate.kt:57)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.keyboard.MainKeyboardView.setKeyboard(MainKeyboardView.java:405)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.keyboard.KeyboardSwitcher.setKeyboard(KeyboardSwitcher.java:152)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.keyboard.KeyboardSwitcher.setAlphabetKeyboard(KeyboardSwitcher.java:211)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.keyboard.internal.KeyboardState.setAlphabetKeyboard(KeyboardState.java:305)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.keyboard.internal.KeyboardState.onLoadKeyboard(KeyboardState.java:143)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.keyboard.KeyboardSwitcher.loadKeyboard(KeyboardSwitcher.java:123)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.latin.LatinIME.onStartInputViewInternal(LatinIME.java:990)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.latin.LatinIME$UIHandler.onStartInputView(LatinIME.java:507)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at org.dslul.openboard.inputmethod.latin.LatinIME.onStartInputView(LatinIME.java:812)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at android.inputmethodservice.InputMethodService.showWindowInner(InputMethodService.java:1645)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at android.inputmethodservice.InputMethodService.showWindow(InputMethodService.java:1596)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at android.inputmethodservice.InputMethodService$InputMethodImpl.showSoftInput(InputMethodService.java:446)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at android.inputmethodservice.IInputMethodWrapper.executeMessage(IInputMethodWrapper.java:206)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:37)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:102)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:154)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6314)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
01-27 09:23:42.232  3873  3873 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Emoji search

Would be quite useful if there was a way to search for emojis.

Switch to Emoji view and then search (e.g. type "heart" and you will see the heart emojis ❤️, 🥰, 💌,❣️).

button for insert paragraph

hello,i miss to set the button for a paragraph within the text. is it because of my german layout, or is this button just missing?

thanks

Reduce size of package

There is no reason a simple keyboard should be 24MB. Even complicated apps are less than 10MB.

Looking at other keyboard packages for reference:

  • openboard-1.3.apk 24 MB
  • hackerskeyboard-v1.41.1.apk 2.57 MB
  • AnySoftKeyboard 5.77 MB
  • BeHe Keyboard 1.0 MB

One clear misuse is adding All dictionaries directly.
Which is why having the ability to add-on dictionaries is important. Not everyone wants nor uses all dictionaries.
https://github.com/dslul/openboard/tree/master/app/src/main/res/raw

Adding more dictionaries will keep increasing size of apk, by around 1mb per dictionary.
Having a way to import dictionaries manually will help reduce the size.

Allow blacklisting of words from default dictionary

SwiftKey allows you to stop any word from appearing as you type, even if it's in the default dictionary. The ability to long press on a prediction that I would never use, and blacklist it, would be very helpful.

Blinking

Keyboard blinks every time when I switch the language. This is very annoying behavior:

I do not have this problem with AOSP keyboard.

OpenBoard cannot be opened with MIUI

If MIUI users disable this option in the App: Show app icon

There is no way to get back to the OpenBoard settings. When user try to press the comma key for a long time to reach OpenBoard settings this way. It doesn't work.

The cause. It only appears in MIUI and probably other Android systems that do something similar.

Here's the link.
https://stackoverflow.com/questions/56295901/miui-permission-denied-activity-keyguardlocked

There are no direct instructions if MIUI users want to return to the Openboard settings using the method (press comma key). But then wonder why nothing happens.

On MIUI 11 (Android 9) this has to be activated to solve this.

Settings -> Apps -> Manage apps -> OpenBoard -> Other permissions -> enable: Display pop-up windows while running in background

Turkish dictionary

Thank you for this perfect job.
Can you add turkish dictionary please. 😊

Word suggestion: make border wider

Long word suggestions often get cut although there is still lots of space left. See screenshot.
It would be nice if the border can be widened in order to use all display space available and/or to reduce the text size of long suggestions by max. 25% (so that you can still read it).

IMG_20200130_141754_861

Changing the keyboard layout

I have added custom layouts (Dvorak) to the languages I use but I see no option to activate them or switch to them. All the languages still show the default, Qwerty, keyboard layouts.
The custom layouts are only shown in the Customized Input Styles setting but cannot be selected anywhere else.
Am I missing something?

One hand mode

It would be nice if we have one hand mode and adjustable height. Having swipe typing will make it perfect FOSS keyboard. The first release looks promising thank you for bringing FOSS keyboard Android doesn't have proper FOSS keyboard. Hope imp features are added in New releases

Add Size settings to keyboard

Really, Relly nice keybord for FOSS-devices.
But i can't change keyboard side for my big fingers(
Do you can add this feature in the future releases?

Suggest pasting from clipboard

I'd like to share a feature request:
After tapping the message field, openboard should suggest inserting previously copied text if the user has not written anything in the meantime (i.e. has not used the keyboard).

For better understanding, some steps to reproduce:

  1. Copy some text
  2. Close openboard (as if you were switching apps)
  3. Tap a message field where you want to paste your copied text
  4. Currently no suggestion available on word dictonary bar (e.g. paste-icon or simply the copied text)

suggestions from multiple dictionaries

Hi, first of all thanks a lot for the project I've been looking for FOSS keyboards alternatives for a long time!
One feature I miss at the moment is to have suggestions from multiple dictionaries at the same time.
I usually write in 2 different languages and I'd like to receive suggestions from both (based on the word I'm typing).

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.