Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH] correct: add support for colemak layout



On 3/9/23, Nikita Romanyuk <ufh8945@xxxxxxxxx> 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@xxxxxxxxx>
> ---
>  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




Messages sorted by: Reverse Date, Date, Thread, Author