Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Double tap circle to insert a period. #265

Open
BloodRaven0 opened this issue Mar 23, 2022 · 11 comments
Open

Double tap circle to insert a period. #265

BloodRaven0 opened this issue Mar 23, 2022 · 11 comments

Comments

@BloodRaven0
Copy link

This feature is present in most other keyboards (double tap space to insert period and a space after it) and will help new users get used to the keyboard faster. Furthermore, the period is currently too hard to insert for such a commonly used symbol - you have to make a full circle. Instead if it's on double tap of the central circle (space), another symbol could take its current place, like : ; " & _

P.S. I'm a new user and it took me a good two minutes to write only the title 😅
Love the keyboard tho, keep working on it!

@levigutt
Copy link

Sometimes I need to input multiple spaces, for indenting or aligning text. This feature would get in the way of that.

If a feature like this is added, it'd be great if there was an option to disable it :)

@martin-braun
Copy link

martin-braun commented Jun 19, 2023

How about this: If you finalize the letter by moving from the center to the bottom before lifting the finger, it will undo the last space and insert . ?

Sadly I think this would break custom inside_circle/bottom/no_touch mappings, but maybe it's worth doing so, because it would feel very natural to me.

@levigutt
Copy link

I do this when I don't want a trailing space 😅

@martin-braun
Copy link

martin-braun commented Jun 19, 2023

@levigutt You are right.

Correction: C-B-C could insert . , this actually work. You don't need any app changes for that, see this mapping:

    - movement_sequence:
        - inside_circle
        - bottom
        - inside_circle
      lower_case: .
      upper_case: .

Unfortunately, my suggestion would clash with the suggestion to have at least two cells in the movement, and we definitely should keep this suggestion up. Otherwise, you would accidentally triggering dots that you might not want to print in the first place.

@martin-braun
Copy link

Ok, so I tried to map these:

    - movement_sequence:
        - no_touch
        - bottom
        - inside_circle
      lower_case: .
      upper_case: .
    - movement_sequence:
        - no_touch
        - bottom
        - inside_circle
        - bottom
        - no_touch
      lower_case: .
      upper_case: .
    - movement_sequence:
        - no_touch
        - bottom
        - inside_circle
        - bottom
        - inside_circle
      lower_case: ","
      upper_case: ","
    - movement_sequence:
        - no_touch
        - bottom
        - inside_circle
        - bottom
        - inside_circle
        - bottom
        - no_touch
      lower_case: ","
      upper_case: ","

The idea is that you write your word, but go into the bottom cell, lift your finger to not insert any space, then touch the bottom cell and move up into the center, lift your finger and it would insert a dot with a final space.

Unfortunately, 8vim seems to disallow this map for any reason. @flide is there a reason to disallow B-C maps? Yes, I know L-C, T-C and R-C are blocked, since they are reserved, but it seems B-C is not used and blocked for future use only?

Maybe it would make sense to give the user a quicker way to insert dots and commas in the same way I presented above? I also think a faster method to insert . is needed for chat flow with the keyboard.

@flide
Copy link
Collaborator

flide commented Jun 19, 2023

If your map happens to be a subset of an already defined map, it is considered invalid.

@martin-braun
Copy link

@flide Ok, I get it, because the center cell doesn't require me to lift a finger, so it will not accept my map, because there is something bigger that could come. My comma keymap is just an example to this. Now I simplified it to:

    - movement_sequence:
        - no_touch
        - bottom
        - inside_circle
      lower_case: .
      upper_case: ","

There is no other movement sequence starting with no_touch/bottom/inside_circle, but it still doesn't work.

Screenshot 2023-06-19 at 13 50 28

@flide
Copy link
Collaborator

flide commented Jun 19, 2023

I think your map clashes with the movement to move between layers

@martin-braun
Copy link

@flide Ah, just discovering layers. Here are my thoughts:

  • To type a letter from the 2nd layer you have to do B-C-B-C-..., but wouldn't B-C-... already be enough to start?
  • My keymap doesn't feature a 2nd layer and I don't really need that. It would be nice if B-C was available to map in that case.
  • The reason why I would prefer not to use layers is, because they interrupt the flow by requiring to lift a finger, this is not so nice mid-words.

But independent from your response, my suggestion to hard-code this is useless now, I still would enjoy to get access to B-C to use it for punctation.

Thank you.

@guancio
Copy link
Contributor

guancio commented Aug 1, 2023

I've made some experiments here
The idea is that one could iterate among several punctation (e.g. " " "." and ". "). One could have the same punctuation both with space and without, and have multiple spaces.

In the current branch this list is static: " ", ". ", ", ", "? ", ".", "! ", ": ", "@"

For example, clicking twice produces ".", while clicking 5 times produces "." without space (useful for entering URLs).

In in the yaml file, we could make this list configurable and disable this functionality.

@embie27
Copy link

embie27 commented Apr 5, 2024

Are there any intentions to include @guancio 's idea? I find it quite helpful.

github-actions bot added a commit that referenced this issue Apr 29, 2024
…484)

Bumps
[commons-codec:commons-codec](https://github.com/apache/commons-codec)
from 1.16.1 to 1.17.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/apache/commons-codec/blob/master/RELEASE-NOTES.txt">commons-codec:commons-codec's
changelog</a>.</em></p>
<blockquote>
<h2>Apache Commons Codec 1.17.0 RELEASE NOTES</h2>
<p>The Apache Commons Codec component contains encoders and decoders for
various formats such as Base16, Base32, Base64, digest, and Hexadecimal.
In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.</p>
<p>Feature and fix release. Requires a minimum of Java 8.</p>
<h2>New features</h2>
<ul>
<li>
<pre><code> Add override
org.apache.commons.codec.language.bm.Rule.PhonemeExpr.size(). Thanks to
Gary Gregory.
</code></pre>
</li>
<li>
<pre><code> Add support for Base64 custom alphabets
[#266](apache/commons-codec#266). Thanks to
Chris Kocel, Gary Gregory.
</code></pre>
</li>
<li>
<pre><code> Add Base64.Builder (allows custom alphabets). Thanks to Gary
Gregory.
</code></pre>
</li>
<li>
<pre><code> Add Base32.Builder (allows custom alphabets). Thanks to Gary
Gregory.
</code></pre>
</li>
<li>
<pre><code> Add Base64 support for a custom padding byte (like Base32).
Thanks to Gary Gregory.
</code></pre>
</li>
</ul>
<h2>Fixed Bugs</h2>
<ul>
<li>CODEC-320: Wrong output of DoubleMetaphone in 1.16.1. Thanks to
Martin Frydl, Gary Gregory.</li>
<li>
<pre><code> Optimize memory allocation in PhoneticEngine. Thanks to Gary
Gregory.
</code></pre>
</li>
<li>
<pre><code> BCodec and QCodec encode() methods throw
UnsupportedCharsetException instead of EncoderException. Thanks to Gary
Gregory.
</code></pre>
</li>
<li>
<pre><code> Set Javadoc link to latest Java API LTS version. Thanks to
Gary Gregory.
</code></pre>
</li>
<li>
<pre><code> Base32 constructor fails-fast with a NullPointerException if
the custom alphabet array is null. Thanks to Gary Gregory.
</code></pre>
</li>
<li>
<pre><code> Base32 constructor makes a defensive copy of the line
separator array. Thanks to Gary Gregory.
</code></pre>
</li>
<li>
<pre><code> Base64 constructor makes a defensive copy of the line
separator array. Thanks to Gary Gregory.
</code></pre>
</li>
<li>
<pre><code> Base64 constructor makes a defensive copy of a custom
alphabet array. Thanks to Gary Gregory.
</code></pre>
</li>
</ul>
<h2>Changes</h2>
<ul>
<li>
<pre><code> Bump org.apache.commons:commons-parent from 66 to 69
[#250](apache/commons-codec#250),
[#261](apache/commons-codec#261). Thanks to
Dependabot, Gary Gregory.
</code></pre>
</li>
<li>
<pre><code> Bump commons-io:commons-io from 2.15.1 to 2.16.1
[#258](apache/commons-codec#258),
[#265](apache/commons-codec#265). Thanks to
Dependabot, Gary Gregory.
</code></pre>
</li>
</ul>
<p>For complete information on Apache Commons Codec, including
instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec
website:</p>
<p><a
href="https://commons.apache.org/proper/commons-codec/">https://commons.apache.org/proper/commons-codec/</a></p>
<p>Download page: <a
href="https://commons.apache.org/proper/commons-codec/download_codec.cgi">https://commons.apache.org/proper/commons-codec/download_codec.cgi</a></p>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/apache/commons-codec/commit/5d809fe3d729bde9b507a51d2b2ed659da053692"><code>5d809fe</code></a>
Prepare for the next release candidate</li>
<li><a
href="https://github.com/apache/commons-codec/commit/9a59c1c47b02ca795270b758c8d0591f5925b10f"><code>9a59c1c</code></a>
Prepare for the next release candidate</li>
<li><a
href="https://github.com/apache/commons-codec/commit/5f0cfd46c89df69b579f37562ff1eded7ffd4b5c"><code>5f0cfd4</code></a>
Longer lines</li>
<li><a
href="https://github.com/apache/commons-codec/commit/8714b5f62bb5fa5950aa5e8908bd0d8d3334dba5"><code>8714b5f</code></a>
Remove dead comment</li>
<li><a
href="https://github.com/apache/commons-codec/commit/c56b95664913aab406f768c66f9264481b28c1bb"><code>c56b956</code></a>
Bullet-proof internals</li>
<li><a
href="https://github.com/apache/commons-codec/commit/d2215d5dec3031f819c3bb514587d92a6aec8eff"><code>d2215d5</code></a>
Base32 constructor fails-fast with a NullPointerException if the
custom</li>
<li><a
href="https://github.com/apache/commons-codec/commit/fcc70e6fa1271158dd8f3a90350fa2589713f257"><code>fcc70e6</code></a>
Base32 constructor makes a defensive copy of the line separator</li>
<li><a
href="https://github.com/apache/commons-codec/commit/ebe805a2730ad38886f9f04bd4d242e0a8c9caaa"><code>ebe805a</code></a>
Base64 constructor makes a defensive copy of a custom alphabet
array</li>
<li><a
href="https://github.com/apache/commons-codec/commit/55043334240eb2a1838e37ea1c8a6e434d328fdf"><code>5504333</code></a>
Better exception message</li>
<li><a
href="https://github.com/apache/commons-codec/commit/c6c5f11eae145d8e8c655e622f0fc5dd74e6db2a"><code>c6c5f11</code></a>
Base64 constructor makes a better defensive copy of the line
separator</li>
<li>Additional commits viewable in <a
href="https://github.com/apache/commons-codec/compare/rel/commons-codec-1.16.1...rel/commons-codec-1.17.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=commons-codec:commons-codec&package-manager=gradle&previous-version=1.16.1&new-version=1.17.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants