GithubHelp home page GithubHelp logo

julow / unexpected-keyboard Goto Github PK

View Code? Open in Web Editor NEW
1.2K 30.0 161.0 3.11 MB

A lightweight virtual keyboard for developers.

License: GNU General Public License v3.0

Java 94.23% Nix 0.30% Python 5.47%
android keyboard

unexpected-keyboard's Introduction

Unexpected Keyboard

Get it on F-Droid Get it on Google Play

Lightweight and privacy-conscious virtual keyboard for Android.

intro_video.mp4

The main feature is that you can type more characters by swiping the keys towards the corners.

This application was originally designed for programmers using Termux. Now perfect for everyday use.

This application contains no ads, doesn't make any network requests and is Open Source.

Usage: to apply the symbols located in the corners of each key, slide your finger in the direction of the symbols. For example, the Settings are opened by sliding in the left down corner.

Screenshot-1 Screenshot-2 Screenshot-3
Screenshot-4 Screenshot-5 Screenshot-6

Similar apps

  • Calculator++ - Calculator with a similar UX, swipe to corners for advanced math symbols and operators. Works up to Android 13 but maybe unmaintained.

Contributing

For instructions on building the application, see Contributing.

unexpected-keyboard's People

Contributors

9-2-1 avatar alotbsol555 avatar arenal5 avatar chasmsolacer avatar eandersons avatar goran909 avatar igorsilcar avatar julow avatar k4zoku avatar maki1love avatar marciozomb13 avatar matthiakl avatar maxgyver83 avatar moini avatar nitsvga avatar polyctena avatar poussinou avatar quantenzitrone avatar ramkromberg avatar retrogisusdev avatar rodrigodd avatar rvnpower avatar rzhssnzdh avatar sdrapha avatar sestowner avatar spike-from-nh avatar tmqcypher avatar v6lhost avatar validbit avatar vedamanavi 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

unexpected-keyboard's Issues

Swedish language - accentflag ring is missing

Hi!

Thanks for your keyboard on F-droid. I think to swipe for accents is a much better input method for me than long press.

I write a lot in the swedish language. Unfortunately I can't construct the Å and å with the Unexpected Keyboard. I switched on Show every accents in the configuration but can not find the ring ◌̊ https://en.wikipedia.org/wiki/Ring_(diacritic) on any key.

It would be great if you could add it to the default QWERTY-layout.

Thanks a lot!

Russian language

In my life i use two languages often: russian and english. how to switch between them quickly? i don't even see the russian language support at all, but it can be added by different people. we still need the quick switch key between layouts

Windows/Super key

There is no way to press Win key which is often located in left bottom part of keyboard. Without it there is no way to change active workspace in i3-wm (Linux) and to do other things bound to Win key. I would prefer it instead of Fn key

Feature request: Swipe for CapsLock

Currently, you press the shift key once for activation and then twice for deactivation because this key has three states: Off, Shift, CapsLock.

Pressing this key twice for deactivation is not comfortable.

What do you think about this solution?

The shift key toggles only between on and off. And for CapsLock you could swipe to a corner of the shift key.

Customize height of the virtual keyboard

I am currently using Multiling O Keyboard. It is highly customizable except for keyboard layouts. I think an important feature is being able to adjust the height of the keyboard so people can type comfortably according to their own habits.

Resize feature?

Is a feature coming that will enable resizing of the keyboard? It's gigantic.

move cursor by holding the space key

Your keyboard is reallu great for symbols, but it could be even beyyer for gestures.

I tried typewise for a few days, and the way you move your cursor ans delete characters with this keyboard is incredible.

If this keyboard had gestures for the cursor (and uppercase letters), this would probably be the best I have seen so far !

Add german Umlauts to QWERTZ

As discussed in #20, the german Umlauts ä, Ä, ö, Ö, ü, Ü should be added to the a, o and u keys directly without having to pick the ◌̈ first.

I could help contributing the Umlauts back. However, I'm not sure whether its worth setting up the dev environment, since the commits in #20 seem to contain everything we need already.
What do you think?

Latest release 1.10 missing in Fdroid?

Latest release 1.10 missing in Fdroid?

I'm realing looking forward the fixes that were merged and released in 1.10.0 but I can't seem to find that apk anywhere.

TAB key odd behavior

Currently the TAB key inserts an (unicode tab stop char?) identation.
Where most coding focused keyboards treat the TAB key as a special key and send the TAB key code as it was pressed in a real keyboard. So the final result is not the same.
For example, editing code in homeassistant, selecting a whole block of text and pressing TAB in others keyboards or a physical one would change the identation of the whole block, while in this keyboard it will overwrite all text and substitute for a single 'tab stop' invisible char.
If this use case makes sense for anyone, and fixing it would be a regression for those, would at least make sense to have both behaviors with the use of FN key plus the tab...

Support for Qwerty US international with dead key

Hello,

I would like to know if you can add support for the international QWERTY US layout with the support of dead keys ?

Unexpected keyboard only supports international QWERTY US at the moment.

This layout is very useful for all accents with a physical keyboard

Regards

wrong return key

I suspect there are multiple different return keys on an android device, and the one on your keyboard is not the same as the one on the standard g-board.

For example, when I press the return key on gboard when I use discord, it creates a new line.
When I use your keyboad, it sends the message, which quite inconvenient.
Is this behaviour easy to fix ?

swipe behaviour could be explained better

Nothing on the store listing or in the app let me know how to use the keyboard (specifically the alternate symbols that need swipes). It's on the GitHub readme but how many people will find that?

It's easy once you know what to do, but it took a bit of head scratching before I figured it out.

Appreciation post

I love that this keyboard exists.
And that it is coded in Java rather than dart or Kotlin both of which would have increased the app size 10 times.
Thanks for creating this wonderful functional keyboard, need nothing more.

[feature] forcibly show the keyboard at any time

I want to open up the Unexpected-Keyboard app even if there is no text field in focus.

For example, the Hacker's Keyboard app has this feature. It has a notification option that if I tap, the keyboard will pop up. Here's a video of me opening the Hacker's Keyboard app to use the keyboard shortcuts on the mpv app.

hacker.s.keyboard.mpv.18.sec.mp4

drawing glitch on initial show

There's a glitch when switching to this keyboard.

Screenshot_20211203-233045

Only seems to affect the initial show, and maybe only when switching to it from another keyboard.

Add support for CJKV

Han characters are not typed like alphabet, but a sequence of letters that turns into a character.

So if Chinese, Japanese, Korean, Vietnamese are going to be supported, two mechanisms are needed: text replacement and dictionary (key-value pair).

For Chinese, there are two types of input methods: phonetic-based and shape-based. The former includes Pinyin (Latin script) and Bopomofo, the latter includes Wubi and Cangjie. Both types turn their inputs into Hanzi (Han script). The phonetic-based are able to input words but hard to input characters because there are plenty of homophones to select from; the shape-based are good at inputing characters but unable to input words because of ambiguity of the input. Both types need text replacement.

For Japanese, there are two types of input methods: Kana and Romaji (Latin script). Kana input requires text replacement for voiced and semi-voiced as well as geminized and palatalized sounds. Romaji requires text replacement to convert Romaji into Kana. Both finally require a dictionary to turn Kana into Kanji (Han script) words and characters. Because of plenty of homophones, candidates are to be shown as well.

For Korean, Hangul is used in most cases, while Romaja (Latin script) is also available. The Hangul character is constructed from syllables, which requires text replacement. To input Hanja (Han script), another text replacement is required. Romaja is similar to Romaji in Japanese.

For Vietnamese, Hán Nôm (Han script) can be done with text replacement from Quốc Ngữ (Latin script).

Build error: "apksigner: not found"

After fixing #54 manually, I get another build error:

apksigner sign --in "_build/juloo.keyboard2.debug.unsigned-apk" --out "_build/juloo.keyboard2.debug.apk" \
        --ks _build/debug.keystore --ks-key-alias debug --ks-pass "pass:debug0"
/bin/sh: 1: apksigner: not found
make: *** [Makefile:59: _build/juloo.keyboard2.debug.apk] Error 127
rm _build/juloo.keyboard2.debug.unaligned-apk

For me, this simple fix works:

-    apksigner sign --in "$<" --out "$@" \
+    $(ANDROID_BUILD_TOOLS)/apksigner sign --in "$<" --out "$@" \

Is apksigner expected to be on the PATH?

Home key doesn't work

The Home key ( fn + left arrow ) doesn't work in all 3 different devices I use this keyboard.

[QoL] Alternative Keys (corner values) behaviour

The current behaviour of the keyboard is whenever typing, it's not possible to target the center of the key for regular characters.
There are invariably situations where the fingertip touches the key closer to the corner & triggers the corner values instead.
Meaning, that more often than on traditional keyboards, regular words require correction & thus typing is more time consuming.
Changing the size of the keys, long press interval or "distance of corner values" in the settings doesn't help much.
I thus suggest revisiting the behaviour of triggering the corner values to a more efficient mechanism; example: slide to corner would trigger a popup & the selection of that character would be on the popup itself. A press of the base key would only trigger that key itself, not any of the corner values.

copy, paste, cut, undo, redo, select all, etc. (Ctrl + <a key>)

Are these functions currently functional? Many third-party keyboards I've used have had a Ctrl key, but the modifier key actions (see the title) have been borked in some way.

Currently the interactions seem to have no effect (LineageOS 17.1 on Oneplus 5T, v 1.9.2 from F-Droid).

Enter key behaviour

I just installed the most recent release (1.12.0) to test the fix from #45.
Unfortunately, this does not seem to have solved my issue. I recorded a video to demonstrate:

screen-20220131-104318.mp4

In the beginning, I press the Enter key once which makes the focus change to the "Sorted by:" view below the search field. Only then, the Enter button becomes the Done button. Ideally, it should have been like this from the first time the keyboard pops up.
Then I perform various actions on the UI (clear search text, change focus) hoping to illustrate the issue.

Please let me know if you need any further details.

Many thanks for your great work! 👍

Can the swipe delay be customized?

When typing any longer alphabetical string without focusing on the output, I tend to see as much as 25% accidentally added special characters. Is it possible to adjust the delay for swipe-detection? I feel that even 500ms ("swipe-and-hold") or close would be fine for my use (I rarely type on mobile and prefer reliability).

Worth noting that I use a low scaling setting in Android.

Please consider increasing space between keys.

The keys are too close to each other. I find that this makes me underestimate where to tap when typing fast thus making me commit more errors.

If you look at some of the popular keyboards, they have at least double the space between keys and at least four times between rows. It's like they're abiding to some keyboard design template which leads me to believe it must be working.

Thank you!

Better switching keyboards

When switching keyboards (Upper right corner of the Alt key) it always switches to a specific keyboard, instead of letting me decide.
I'm sorry I compare you to OpenBoard but on Open Board I can decide to what Keyboard I switch.
This is annoying because I have another Keyboard imput Method from KeePassDX installed which has the same Problem. So It happens that I am stuck in a loop between Magikeyboard and unecpected Keyboard and have to visit the system settings to go back to OpenBoard.

Integrate Linux input methods

Congratulations! You realized my idea before I getting to learn Java. This is exactly what I thought: an optimized common Japanese keyboard on mobile for all languages.

On the desktop, there are four characters for a key: not pressing any other key, Shift, AltGr, Shift+AltGr. So I guess it can be corresponding to the "no direction" and 3 directions.

On Linux they are located at a folder, every language has a XKB file, where its keyboards are stored. It is very easy to customize your keyboards there. There are plenty of layouts.

If you are not familiar with Linux, I recommend you to use Debian in a virtual machine and go to 'usr/share/X11/xkb/symbols/' to find out.

Let users create layouts

I think it could be a feature to let users create his/her own keyboard layouts and load it into the program. There is no perfect keyboard layout for a language, so there are always new layouts.

Translations

Are strings translatable? If no, are there any plans to make application multi-language?

always accessible enter key

In a lot of input fields the enter key gets replaced by the action key, making the enter key only accessible via the 123+ menu.

It would be nice here to have the Enter key as a corner key of the Done key.

Build error: "dx: not found"

When I build using make, I get this error:

...
/home/max/Android/Sdk/build-tools/32.0.0/dx --dex --output="_build/classes.dex" _build/class
/bin/sh: 1: /home/max/Android/Sdk/build-tools/32.0.0/dx: not found
make: *** [Makefile:105: _build/classes.dex] Error 127

The problem is that the Makefile chooses the newest Android build-tools version available:

ANDROID_BUILD_TOOLS = $(lastword $(sort $(wildcard $(ANDROID_HOME)/build-tools/*)))

But dx is missing in SDK 31 and 32 (at least on my system):

~/Android/Sdk ▶ ll ~/Android/Sdk/build-tools/
insgesamt 20K
drwxrwxr-x 5 max max 4,0K Dez 22 10:43 28.0.3/
drwxrwxr-x 5 max max 4,0K Jul 30  2021 29.0.3/
drwxrwxr-x 6 max max 4,0K Feb  1 22:25 30.0.3/
drwxrwxr-x 6 max max 4,0K Jul 30  2021 31.0.0/
drwxrwxr-x 6 max max 4,0K Dez 22 10:45 32.0.0/
~/Android/Sdk ▶ fd 'dx$'
build-tools/28.0.3/dx
build-tools/29.0.3/dx
build-tools/30.0.3/dx

CONTRIBUTING.md says, build tools version 30.0.3 is a dependency. I guess the Makefile shouldn't pick any newer versions.

For me it works when I hardcode version 30.0.3:

diff --git a/Makefile b/Makefile
index 6b873e4..532be36 100644
--- a/Makefile
+++ b/Makefile
@@ -27,7 +27,8 @@ ifndef ANDROID_HOME
 $(error ANDROID_HOME not set)
 endif

-ANDROID_BUILD_TOOLS = $(lastword $(sort $(wildcard $(ANDROID_HOME)/build-tools/*)))
+ANDROID_BUILD_TOOLS = $(ANDROID_HOME)/build-tools/30.0.3

Does anybody know, why there is no dx in the latest build-tools?

Building instructions and contributing guidelines

As this app is not using a gradle build system which most devs would be familiar with, a short rundown of instructions to build the app and guidelines for contribution would be helpful for potential contributors or modders.

great start for an utility keyboard

seems its going to be a fun ride. id love to suggest some more easy to reach utility keys. the keyboard im currently using has a ton of them, and itd be awesome if you could also take some inspirations. i honestly am boring, i dont mind custom theming|settings not arriving anytime soon.

to switch to it, long tap the spacebar and select the qwerty(arrows)
https://play.google.com/store/apps/details?id=kl.ime.oh
here are some ss
https://drive.google.com/file/d/1ODQtA8ZS_tXxSmx5105NFgTUVyByEIyq/view

Will autocorrect ever be added?

This is the one feature that is preventing me from instantly moving to this keyboard probably forever. I rely very heavily on autocorrect and custom typing shortcuts that use it.

light mode missing

it's a best keyboard for termux, but when dark mode is off its still dark which cause too difficult to type in outdoor scenario.

Unintuitive arrow key

Thanks for this awesome app! I really like the concept of swiping to the key corners for accessing additional keys!

Except for the arrow key:

Arrow key

It's not intuitive at all swiping diagonally if you mean left, right, up or down. It would make more sense this way:

Arrow key edges

I have already implemented this. Just wait some minutes for my pull request.

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.