Code Monkey home page Code Monkey logo

8vim's Introduction

8Vim

Project Dashboard

The application was started essentially as a clone of 8pen, which for some reason they have stopped distributing. (I can no longer install it, even though I paid for it!)

To exactly understand this keyboard, please watch the video

Stable Stable F-Droid Beta Beta F-Droid Debug F-Droid
Get it on F-Droid Get it on Google Play Get it on F-Droid Get it on Google Play Get it on F-Droid

Manual: Download and install the APK from the release page.

Become a Beta Tester

To become a beta tester please click here

Usability Guide

So, what capablities does 8Vim have?

Basic Stuff
  • right sector acts as a Backspace key.
  • bottom sector acts as an Enter key.
  • top sector acts as a combo of Shift and Caps Lock key (i.e., press once to activate Shift. Press again for Caps Lock. Press once more and everything is back to normal.)
  • left sector acts as a button that takes you to the number pad.
Cursor Movements

If you move your finger from within the circle to any sector, the cursor will move one character in the direction of the sector. For example, if you swipe from the circle to the right sector and then raise your finger, the cursor will move to the right once. If you don't lift up your finger but instead keep pressing on the sector, the cursor will move as long as the sector is pressed.

Selection

There is a selection mode built into the keyboard. If you move your finger from the right sector to the circle and hold, the cursor will start moving left while selecting everything in its path, until you lift your finger. Once you release, the selection mode keyboard will open and show different actions that can then be applied to your selection. (i.e. right-sector->circle->hold->lift-finger)

Paste Functionality

Moving your finger from the left sector to the circle center will paste your clipboard content. (i.e. left-sector->circle->lift-finger)

Handwriting Reinvented

The 8vim draws inspiration from handwriting. By mimicking the way our hand moves when constrained to a square canvas, we are able to create a natural and fun writing experience, akin to doodling on a piece of paper.

Designed for Speed

The layout is optimised for fast writing, by allowing for the most common letter sequences to be produced with swift, fluid gestures. Once familiar with the layout, you can reach speeds of over 40 words per minute!

Typos, goodbye

The simplicity of the gestures used to enter words, allow for true blind typing and virtually eliminate typos. Regardless of whether you have small or big fingers. Word suggestions become an optimisation, not a dependency.

Extended Idea

The thing that bugs me is that most editing done on mobile phones is within those quirky message boxes and there is JUST NO WAY to edit stuff there. Also, it is beyond frustrating to try and create a document on a mobile phone with more characters than a tweet. I feel like 'text editors' for mobile phones are a joke. They have tons of toolbars and stuff which you rarely open up to "edit" something, but the problem remains: You just don't want to type on a mobile phone. It's tedious. It's time consuming. It's frustrating.

Then, there came along 8pen, the keyboard on which you actually can type without looking, and I thought to myself: Now, Now, NOW, FINALLY!! Editing and creating a document/text can be practical enough on a mobile device! In the frenzy, I turned to the plethora of text editors available on various app stores. Yeah, they get the job done, but you have to keep both of your hands engaged and tapping on the various toolbars and buttons… I was missing Vim.

I am a huge fan of Vim - the editor. It is so cool to be able to edit without leaving the keyboard. The idea that, when you are editing, you add less and modify more is so comfortable and incredibly efficient. It works on desktop, because you have a keyboard attached that you can use with - hopefully - all of your fingers. On a touch screen however, it's a very stupid idea to try to use Vim.

I hear you say: "Come on! Don't dismiss the idea without trying it first!". Believe me, I did try. Try it yourself, it's called vimtouch. Vimtouch, the port of Vim for android, although being a big deal technologically, it's utterly unusable in a practical setting. Why? Because at best you've got two thumbs to do the job of ten fingers. It's highly inefficient.

No matter what editor you use, it has one basic issue: It only works when you open it. Confused? Let's try a practical, common, frequently occuring scenario. Your boss has sent you an email and you are ANGRY! You want to reply and pour your heart out. You press the reply button and suddenly realize: "This is the perfect job for an editor!" So you search through the millions of apps you've installed, looking for that editor and only then start editing. It takes you an hour to compose 5 lines. Afterwards you copy-paste the stuff into your email reply only then you are done. What a hassle!!

And then it hit me… Why the hell do you need text editors? Why can't your keyboard act as the editor? It's always there when you actually want to input/edit something and it's software only, so there's no hardware to worry about. You can hack the shit out of it. I mean, WHY NOT??

And this inspiration (rant) became the idea for VIII - an Editor-in-Keyboard.

TO BE CONTINUED...

8vim's People

Contributors

50-sys avatar adamschmalhofer avatar alexkarezin avatar binraptor avatar cgudea avatar davidoskky avatar degoncalves avatar dependabot[bot] avatar devambhatia216 avatar esmoak avatar flauta avatar flide avatar github-actions[bot] avatar goyalyashpal avatar guancio avatar jarmuszz avatar kiisu-master avatar m-rey avatar m-scudder avatar maethornaur avatar michallebeda avatar mward25 avatar nmukhachev avatar npostavs avatar oderjunkie avatar operandiravi avatar poussinou avatar qespr avatar qupufu avatar sslater11 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

8vim's Issues

Paste introduces a space at the end

left->circle movement pastes the content but since you are inevitably going to lift the finger, a space is introduced. it's a pain to paste passwords.

Update keyboard views when configuration parameters are changed in the settings-UI

Currently the keyboard view is not updated instantly as soon as the configuration changes. To view the changes, you need to either

  1. switch the phone to landscape mode and back OR
  2. switch to a different keyboard and back.

This needs to be fixed, the keyboard view needs to be updated as soon as any configuration changes.
A requirement for this would be to be able to communicate between the 'InputMethodService' derived class in our code base to the Activity where the configuration changes are taking place.

Unwanted control gestures registered after the last letter in a word

Ending a gesture outside the circle (to avoid auto-spacing) should not trigger the control functions associated with each quadrant.

   2
   v
3 > < 1
   ^
   4

For example, the letter 's' is center->2->3->center. The natural extension of this gesture would be to continue to quadrant 1. Currently, ending a drag in (1) tries to move the cursor to the right. Most of the time the cursor is at the end of a line and this does nothing, but other letters such as 'y' or 'g' or 'h' have the cursor moving backwards into the word we just typed. Quadrant 2 (move to the beginning of the line) is even more disruptive.

[Feature request] programmable entries accessible from side bar/tray or from gestures

If you could squeeze an icon near the emoji icon in the side bar, and have that take you to programmable slots to enter custom text for easy access like: .com, email address, or anything else used frequently.

I'm envisioning something similar to the implementation in Kboard: https://github.com/adgad/kboard

So:

  • tap new icon
  • tap blank field
  • add custom text (like .com for easy access)
  • tap custom text to change or delete

Thanks for all your work and all you do. Fantastic app.

Possibly related to #54

Option to see typing trail

It might be interesting to see the trail of movement as the user types on the keyboard.

A setting should be available to show or hide such tail.

Improve UI Experience

Right now the UI for the keyboard is grotesque.

Any suggestions, any help is more than welcome.

Support Landscape mode

for 8Vim, in the landscape mode the textfield should be shown on one side of the screen and the keyboard should be shown on another side. This side should be configurable by the user as he/she might prefer left or the right hand.

Prompt the user to switch to the 8vim keyboard when using the settings application

We already check if the 8vim keyboard has been activated on the system when the user opens up the settings UI.
We should also prompt the user to switch to 8vim when the user is playing with the keyboard settings.

So, just like the activation check, show the user a message that he might want to select 8vim as the current keyboard with two buttons -

  1. Switch - in this case display the inputMethodPicker and let the user switch the keyboard

                InputMethodManager imeManager = (InputMethodManager)getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
                imeManager.showInputMethodPicker();
  1. Dismiss - Simply dismiss the dialog box.

Support Predictive Text

The keyboard should be able to support candidate view as the user is typing text into a field, the number of suggestion would be 3 as was in 8Pen. Also selection of a candidate can happen in 2 ways, either touching the candidate directly or as was in 8Pen, you move your finger from the circle to the sector (left, right and top only) and then back in the circle.

Redesign UI for the settings application

The current UI for the settings applications is very unorganized. As part of the task we at-least need to decide on the design and look for the settings UI. A wire-frame should be ready to close this task.

Replace Alt button to settings

Alt button is one of the least used keys on the main-keyboard. We should replace it with the settings key so that when pressed the settings-ui should open up.

Using machine learning to come up with the best layout

I've had a crazy idea, whilst being unhappy with the placement of the character 'y' on the keyboard, which at least in my mother language doesn't get used very much.

What if we could define smoothness of a gesture (finger movement, mathematically a discrete curve) and give it, with the input being a ton of text from books, articles, websites, ..., to a machine learning algorithm, that would try different layouts of the characters to find the ultimate best one that accomplishes most common bigrams or whole words in smooth, flowing gestures. What I mean by that is that you wouldn't need to change the direction of the movement of your finger much (e.g. typing 'no' on the current layout).

What are your opinions on this? I might take this as a project that I would do in my free time. (which is not guaranteed to exist...)

f-droid link is broken

Hi! Thanks for making this clone, I wanted to check it out but the f-droid link seems to be broken.

What's the correct link?

Improve symbol responsiveness on x-pad

Currently, the sectors are blank on the X-board and for a new user there is no way of knowing that the bottom sector is for 'enter' or the top sector acts as a shift/caps-lock button or the right sector acts as a backspace button etc.

The symbols should be at-least displayed for a better UI.

Support clipboard manager

Since 8Vim has a paste functionality already, it would be really good if a full clipboard manager can be supported from the keyboard directly.

I am unsure about how this functionality should be accessed. Any suggestions are welcome.

[feature request] add loop to insert space

Currently, to add a space, the finger has to be lifted on the dot. This has the disadvantage, that you need to lift up the finger to start writing the next word.

It may feel more natural if there's a loop users could use to insert a space without having to lift their finger. People could then write whole sentences in one swipe.

Submit to F-Droid?

This keyboard might get a larger following if it is listed on F-Droid.

Thanks for your work on this keyboard.

Moving back to the previous sector breaks flow until finger is lifted

How to reproduce:

  1. Start in Center
  2. Move to left sector
  3. Move to bottom sector
  4. Move to right sector
  5. Instead of moving to the center (which would result in letter "h"), move back to bottom sector
  6. Move back to center

→ Actual behaviour: No letter is written, continuing without lifting finger has no effect, no more letters are written.
→ Expected behaviour: Letter "i" is written, continuing without lifting finger writes the letters according to the movement.

Note: The expected behaviour is according to the original 8pen app (the full keyboard can still be tested in the 8pen game when pressing the two arrows on the bottom right of the level selection screen). And for me personally it's the most intuitive behaviour.

[Bug] Sidebar left/right setting doesn't seem to work

This still puzzles me: The Sidebar-Left / Sidebar-Right buttons in 8Vim don't seem to do anything. I feel like they used to, but now it seems somewhat random whether they do something.

I suggest, that upon button-press, the keyboard should IMMEDIATELY be restructured.

If other settings have a similar delayed effect, also make them immediately effect the keyboard.

Macros

Vim has a very powerful feature of macros, where as a user I am free to compose a complicaced editing command and save it as a macro to be used at lesiure.

For example, suppose you want to go back 1 letters and insert 'zz' (don't ask me why!) you should be able to do that with a : jizz

And there you go... that should do it. For whatever reason, if you want to save your 'jizz'... macros is the place for it.

https://github.com/adgad/kboard implements such a feature so might be a good point to start.

Support Emoji's

8Vim should be able to support Emoji's.

Emoji's should be accessible from any keyboard by long-pressing the Enter key.

EmojiOne should be the set supported for a start.

Add a Learning Mode

I would say this is probably a low priority thing, but in the absence of a game to practice the keyboard with, it might be nice if the app has a Learning Mode.

It would look something like:

  • open 8Vim app
  • Select option for Learning Mode (among the other settings for "sidebar left" or "emoji keyboard" or "resize circle")
  • learning mode would have different levels where Level 1 might only populate the keyboard with letters "a t n o i s y e"
  • learning mode could give a list of words to practice like no, to, yes (this option could easily be left out since people can come up with their own words to test with the given letters)
  • learning mode would allow you to practice in the "test your keyboard here" field

Edit: Learning mode would only be applicable to the 8Vim app. If the user left the app without turning off learning mode, the full keyboard will be displayed and usable in other apps

Display number keyboard when appropriate

Based on input sub type of the text field, directly open the numbers keypad.

When an input field receives focus and the IME starts, the system calls onStartInputView(), passing in an EditorInfo object that contains details about the input type and other attributes of the text field. In this object, the inputType field contains the text field's input type.

The inputType field is an int that contains bit patterns for various input type settings. To test it for the text field's input type, mask it with the constant TYPE_MASK_CLASS, like this:
inputType & InputType.TYPE_MASK_CLASS

https://developer.android.com/guide/topics/text/creating-input-method

Show the already selected emoji keyboard in the emoji selection dialog

Currently the emoji keyboard selection dialog in the UI does not show any keyboard selected when the dialog opens. This makes sense for the first time, but is not correct when the user had selected one earlier. Make sure the item is pre selected if the user had made a selection ever before.

Cursor Movement should not possible after starting to write a word

Cursor movement emulation should only be possible when starting in the circle and moving to a sector.
Cursor movement emulation should not be possible when some letters were already written and the finger was not lifted since then.

Example:

I want to write "Hello", so I start in the center, move left, move down, move right, move back to the circle, without lifting the finger I move down, left, back to the circle, without lifting finger I move down. Now because I forgot, I wait some time to check where I actually have to move to, but because I am waiting, the keyboard interprets that as Move Cursor Down (Circle > Down > Wait).

It's kind of hard to explain, I hope you get what I mean. Please tell me if you need a better explanation... xD

Option to automatically switch to upper case on a new sentence

The app would be even a little bit more efficient if it started in upper case mode and the mode would switch to uppercase automatically after a period and space was just written.

This behaviour should preferably be enabled/disabled in a settings menu.

Support custom letter layout

Hi, it would be nice if the user could define an own layout.

Different languages have different letters and letter combinations that are frequently used.
E.g. in German we use "sch" quite often. With the current layout that is optimised for English, this combination is a bit awkward/inefficient to write because S and C are opposite on the same line.

Also different languages might have additional letters that currently are not available.
E.g. in German we use the umlauts (äöü) quite often. Swedish also uses umlauts and the å character. Etc.

Maybe the character set/layout could be defined with configuration files that will be read by the app. That way the community could provide layouts.

Letters don't immediately reflect Shift/CapsLock changes

When tapping the top quadrant to switch in or out of shift modes, the on-screen letter previews don't switch to their shifted or unshifted versions.

Re-displaying the circle keyboard is enough of a refresh to get the correct characters - For example, hiding the on-screen keyboard and subsequently re-selecting a text field, or entering the edit controls screen and then returning to the circle.

Change application icon

Application icon needs to be changed to referenced image. The image is in svg, and should be used either as is or should be converted to android vector graphic.
Image should not be converted to any fixed resolution format.

Uploaded the image to fastlane/metadata/android/en-US/images/8vim_icon.svg

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.