----------------- GNU Loops Tracer: GLT is a text input method for tactile surfaces. It is based on the possible combinations of loops between central and perimetrical points. The input method is deterministic (non predictive) and intended to be a comfortable replacement of QWERTY virtual keyboards. 5 6 4 7 0 3 8 2 1 Fig. 1 Each number is a circle of radius R. The central point is 0 and the other points are distributed in circle around it (the input circle). The radius of the resulting circle is RR, measured from the center of the point 0 to the center of the outer points. R and RR can be adjusted to different convenience sizes (depending on hands and screen sizes and/or text input speed vs precision). The input circle of the Fig. 1 is generated over any surface in any place of the surface around the finger that touches it. +------------------------+ +------------------------+ | | | 5 | | | | 6 4 | | x | |7 0 3 | | ^ | => | 8 2 | | finger touch | | 1 | | | | ^ | | | | input circle | +------------------------+ +------------------------+ +------------------------+ +------------------------+ | | | input circle | | | | v | | finger touch | | 5 | | v | => | 6 4 | | x | | 7 0 3 | | | | 8 2 | | | | 1 | +------------------------+ +------------------------+ Fig. 2 The input circle is relative to the initial touch. The traces are recognized when the hands moves over different circles. There are stored as traces only different successive points. The central and peripherial circles acts as surfaces that detects the pass of the finger. After the first touch the input circle remains in the same position and the finger moves relative to it. The symbols are generated by different traces that connects the points from the point 0 and back to 0 or releases the trace (nil). The traces can be concatenated in the first case. [0, 1, 2] [nil | 0] makes a short loop. [0, 2, 1] [nil | 0] makes a short loops in opposite direction. [0, 1, 2, 3] [nil | 0] makes a long loop. [0, 3, 2, 1] [nil | 0] makes a long loop in opposite direction. [0, 1, 2, 1] [nil | 0] makes a direction changing loop. etc... [0, 1] [nil | 0] makes a simple loop. [0, 5] [nil | 0] makes a simple loop in opposite direction. There are many possible traces. Simple and long loops are 16 each, 32 in total, enough to the basic latin characters of many languages. Direction changing loops adds a huge amount of possible trace adding 32 (counting the opposite direction) possibilities each, they can be used to special characters and modifiers like enter, return, etc... Simple loops are not really loops but the simplest possible trace (or very thin ellipses), they could be used for the most important special characters or modifiers (as the direction changing loops), there are only 8 simple loops. Despite the fact that this virtual input method is based on connection virtual points, the resulting hand-made traces are not necessary straight lines, due to the "physical" disposition and diameter of the central and peripherial points the traces are just recognized between certain limits. The ascii alphabet symbols are distributed in order following the this rules starting by the [0, 1] line: short loops counterclockwise, short loops opposite direction clockwise, long loops counterclockwise, long loops opposite direction clockwise. This method is not conceived as predictive nor based on the most frequent letters by language, the disposition of the basic ascii symbols should be always the same. The patterns aren't recognized by specialized trace search algorithms but simply by the physical disposition of the input circle making it easy to implement and consistent to use. A very basic Android (and SuperCollider) application is given as a proof of concept. ------ Notes: There are related approaches to this input method, the most relevant is 8pen. Although this method was not conceived nor derived from that this shares the hand-prone trace conception. Aside form that fact, I think the trace building method differs substantially from the 8pen method and understands the basic traces as equal (almost, in fact) to each other differing just by its sense and direction. There is no privilege to most frequent letters, they are all (almost) equal to trace (and distributed just in order), that is the original principle. This method was thought by me pondering many different possibilities and I think it is fairly original, any omission is not intentional. Do not hesitate in let me know if I'm wrong in something. I publish this because I don't have the time-money-resources to develop it and may be a good idea for a free text input method. Although, obviously, as difficult to learn as the letters of the alphabet. Think on the future (more than a project this is a theoretical proposition right now), go ahead if you want to develop this idea (please as GNU, as free as it is). My best wishes. -------- Copying: The content of this writing is under Creative Commons Attribution 3.0 License. Copyright of the example code (Loops.java) is GNU GPLv3.