zsh-workers
 help / color / mirror / code / Atom feed
From: Mikael Magnusson <mikachu@gmail.com>
To: Nikita Romanyuk <ufh8945@gmail.com>
Cc: zsh-workers@zsh.org
Subject: Re: [PATCH] correct: add support for colemak layout
Date: Fri, 10 Mar 2023 04:37:35 +0100	[thread overview]
Message-ID: <CAHYJk3ShpoS_QbVYCVsejm9003ahcedE06Tc=-MirbmNTWM-wg@mail.gmail.com> (raw)
In-Reply-To: <20230309174316.11290-1-ufh8945@gmail.com>

On 3/9/23, Nikita Romanyuk <ufh8945@gmail.com> wrote:
> Colemak is a modern alternative to the QWERTY and Dvorak layouts,
> designed for efficient and ergonomic touch typing in English.

It would be nice to not introduce another weird tri-state thing here,
eg what should happen when both dvorak and colemak are set, why is
qwerty not a named option, etc. Perhaps it would be nicer to just let
the user set the layout in some special (namespaced?) parameter for
scalability and deprecate the dvorak option. We could have some helper
function in the distribution that sets this parameter for various
known layouts.

> Signed-off-by: Nikita Romanyuk <ufh8945@gmail.com>
> ---
>  Doc/Zsh/options.yo |  8 ++++++++
>  Src/options.c      |  1 +
>  Src/utils.c        | 14 ++++++++++++++
>  Src/zsh.h          |  3 ++-
>  4 files changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/Doc/Zsh/options.yo b/Doc/Zsh/options.yo
> index 443676b..cda4b33 100644
> --- a/Doc/Zsh/options.yo
> +++ b/Doc/Zsh/options.yo
> @@ -1235,6 +1235,14 @@ Use the Dvorak keyboard instead of the standard
> qwerty keyboard as a basis
>  for examining spelling mistakes for the tt(CORRECT) and tt(CORRECT_ALL)
>  options and the tt(spell-word) editor command.
>  )
> +pindex(COLEMAK)
> +pindex(NO_COLEMAK)
> +pindex(NOCOLEMAK)
> +item(tt(COLEMAK))(
> +Use the Colemak keyboard instead of the standard qwerty keyboard as a
> basis
> +for examining spelling mistakes for the tt(CORRECT) and tt(CORRECT_ALL)
> +options and the tt(spell-word) editor command.
> +)
>  pindex(FLOW_CONTROL)
>  pindex(NO_FLOW_CONTROL)
>  pindex(FLOWCONTROL)
> diff --git a/Src/options.c b/Src/options.c
> index a1fe918..8f9fe85 100644
> --- a/Src/options.c
> +++ b/Src/options.c
> @@ -280,6 +280,7 @@ static struct optname optns[] = {
>  {{NULL, "stdin",	      OPT_ALIAS}, /* ksh */	 SHINSTDIN},
>  {{NULL, "trackall",	      OPT_ALIAS}, /* ksh */	 HASHCMDS},
>  {{NULL, "dvorak",	      0},			 DVORAK},
> +{{NULL, "colemak",	      0},			 COLEMAK},
>  {{NULL, NULL, 0}, 0}
>  };
>
> diff --git a/Src/utils.c b/Src/utils.c
> index 62bd3e6..b3d09d7 100644
> --- a/Src/utils.c
> +++ b/Src/utils.c
> @@ -4607,10 +4607,24 @@ spdist(char *s, char *t, int thresh)
>  \t\"<>PYFGCRL?+\t\
>  \tAOEUIDHTNS_\n\t\
>  \t:QJKXBMWVZ\n\n\t\
> +\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
> +    const char colemakkeymap[] =
> +    "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\
> +\t1234567890-=\t\
> +\tqwfpgjluy;[]\t\
> +\tarstdhneio'\n\t\
> +\tzxcvbkm,./\t\t\t\
> +\n\n\n\n\n\n\n\n\n\n\n\n\n\n\
> +\t!@#$%^&*()_+\t\
> +\tQWFPGJLUY:{}\t\
> +\tARSTDHNEIO\"\n\t\
> +\tZXCVBKM<>?\n\n\t\
>  \n\n\n\n\n\n\n\n\n\n\n\n\n\n";
>      const char *keymap;
>      if ( isset( DVORAK ) )
>        keymap = dvorakkeymap;
> +    else if ( isset( COLEMAK ) )
> +      keymap = colemakkeymap;
>      else
>        keymap = qwertykeymap;
>
> diff --git a/Src/zsh.h b/Src/zsh.h
> index 40f9ea5..93f3c8c 100644
> --- a/Src/zsh.h
> +++ b/Src/zsh.h
> @@ -2547,7 +2547,8 @@ enum {
>      XTRACE,
>      USEZLE,
>      DVORAK,
> -    OPT_SIZE
> +    OPT_SIZE,
> +    COLEMAK

OPT_SIZE should always go last in this list.

>  };
>
>  /*
> --
> 2.39.2
>
>
>


-- 
Mikael Magnusson


  reply	other threads:[~2023-03-10  3:38 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-09 17:43 Nikita Romanyuk
2023-03-10  3:37 ` Mikael Magnusson [this message]
2023-03-10  4:47   ` Nikita Romanyuk
2023-03-10  5:13     ` Bart Schaefer
2023-03-10  5:18       ` Kelvium
2023-03-11 23:17         ` Bart Schaefer
2023-03-12  6:47           ` Nikita Romanyuk
2023-03-10  5:07   ` Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAHYJk3ShpoS_QbVYCVsejm9003ahcedE06Tc=-MirbmNTWM-wg@mail.gmail.com' \
    --to=mikachu@gmail.com \
    --cc=ufh8945@gmail.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).