Score:5

Make arrow-up/down, Pos1, End, Del ... more easy

in flag

I type with ten fingers with my pointer fingers on "F" and "J".

This way I can type the alphabet with a QWERTZ layout fast and easy.

But many other keys are hard to reach. For example:

Pos1, End, Del, Arrow-Up/Down, Page-Up/Down, ESC, Backspace.

Is there a way to make these keys available while keeping the pointer fingers on "F" and "J"?

I am happy with "A" to "Z" and don't want to switch to a different layout (for example Colemak)

Maybe by making CapsLock a new modifier, so that (for example) CapsLock-u is arrow-up and CapsLock-n is arrow-down?

I use Ubuntu Linux.

I created a follow-up question: Hype-key u --> Like PageUp

guettli avatar
in flag
@LiorPollak you say "there are many plugins available for many programs". I would like to solve this once at desktop-level, not again and again for every program.
guettli avatar
in flag
@UnKNOWn Thank you for your answer. Is your comment still relevant?
guettli avatar
in flag
@UnKNOWn the third level. Isn't this AltGr? In gnome-tweaks I found a way to make CapsLock the Hyper-key. Now I need a way to configure hyper-u, hyper-n ... to behave like up/down ....
Score:4
br flag

from arch wiki link I followed the steps and succeeded in "Arch Linux" and "Ubuntu 20.04" OS'es for While Keeping Caps Lock key + u,h,j,n etc keys. This method allows to highlight the text with Shift+Caps+h keys as mentioned in the link.

Before proceeding, read the Precautions & Preparations link

Step 1

Edit the file /usr/share/X11/xkb/types/complete
Original Content in Ubuntu 20.04

default xkb_types "complete" {
    include "basic"
    include "mousekeys"
    include "pc"
    include "iso9995"
    include "level5"
    include "extra"
    include "numpad"
};

After Edits

default xkb_types "complete" {
    include "basic"
    include "mousekeys"
    include "pc"
    include "iso9995"
    include "level5"
    include "extra"
    include "numpad"
    
       type "CUST_CAPSLOCK" {
       modifiers= Shift+Lock; 
       map[Shift] = Level2;            //maps shift and no Lock. Shift+Alt goes here, too, because Alt isn't in modifiers.
       map[Lock] = Level3;
       map[Shift+Lock] = Level3;       //maps shift and Lock. Shift+Lock+Alt goes here, too.
       level_name[Level1]= "Base";
       level_name[Level2]= "Shift";
       level_name[Level3]= "Lock";
   };
};

Step 2

Edit the file /usr/share/X11/xkb/compat/complete

After Edits

default xkb_compatibility "complete" {
    include "basic"
    augment "iso9995"
    augment "mousekeys"
    augment "accessx(full)"
    augment "misc"
    augment "xfree86"
    augment "level5"
    augment "caps(caps_lock)"
    
       interpret Caps_Lock+AnyOfOrNone(all) {
       action= SetMods(modifiers=Lock);
   };
};

Step 3

Edit the file /usr/share/X11/xkb/symbols/us #change us with your actual symbols file.

Some of the edited content

    key <AC05> {    [     g,    G       ]   };
//  key <AC06> {    [     h,    H       ]   };
    key <AC06> {
       type= "CUST_CAPSLOCK",
       symbols[Group1]= [               h,               H,               Left],
       actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<LEFT>, clearmods=Lock) ]
  };
    key <AC07> {    [     j,    J       ]   };
    key <AC08> {    [     k,    K       ]   };

Like wise, edit the symbol files as per your requirement. key symbols can be obtained by

xev | grep keysym command

$ xev | grep keysym
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    state 0x0, keycode 112 (keysym 0xff55, Prior), same_screen YES,
    state 0x0, keycode 112 (keysym 0xff55, Prior), same_screen YES,
    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
    state 0x0, keycode 22 (keysym 0xff08, BackSpace), same_screen YES,
    state 0x0, keycode 22 (keysym 0xff08, BackSpace), same_screen YES,
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    state 0x0, keycode 115 (keysym 0xff57, End), same_screen YES,
    state 0x0, keycode 115 (keysym 0xff57, End), same_screen YES,
$ 

Step 4
Run the below command to apply the changes immedeately

sudo udevadm trigger --subsystem-match=input --action=change

Source of above command is https://askubuntu.com/a/1075707/739431

guettli avatar
in flag
Is there an easier way to make the change to these files active without logout+login?
br flag
@guetti this command seems to work without "logout and login" `sudo udevadm trigger --subsystem-match=input --action=change`
guettli avatar
in flag
My preferred solution would to not modify the system files. Maybe it is possible to just set capsLock to the hyper key (via gnome-tweaks) and then modify .xmodmaprc?
guettli avatar
in flag
@Unkown: I created a follow-up question: https://askubuntu.com/questions/1382762/hype-key-u-like-pageup
user.dz avatar
ng flag
@guettli you can use this solution (from UnKNOWn's answer) without editing the original files, instead create your own new inherited layouts. I have tried inherited XKB symbols as in my answer here https://askubuntu.com/q/482678/26246 or from others in https://askubuntu.com/q/510024/26246 . for XKB types, I expected to be same way, structure is explained in previous link. This way, you can even package the new layout, and copy it into other machines.
Score:2
kr flag

To solve this kind of problem some keyboard layouts include extra layers other than those offered by shift/capslock and regular modifier keys. One example is the Neo (wikipedia; docs (in german); docs (google translated)).

Neo offers 6 layers and the movement-keys-layer you are willing is the fourth layer. (The layers are 1-lowercase, 2-uppercase, 3-special chars, 4-movements+numbers, 5-greek chars (for formulas); 6-math symbols+greek uppercase.

Just like what happens with shift that takes you from layer 1 to layer 2 (lowercase to uppercase regular text), a single keystroke to M4 keys (shown on the image, seems to be equivalent to qwertz's < and alt-gr) takes you to the fourth layer.

Neo's 4th layer:

neo keyboard layout fourth layer (image taken from official website)

It is possible to see that up-down for example are not vim like, they are one above other just regular keyboards.

Movements' key locations on neo's fourth layer:

movement key
home a
end g
del r
up e
down d
pgUp q
pgDown t
ESC z
backspace w

The first two layers are optimized for german. But since you still want to stay with qwertz layout, there is a variation, called neoquertz, where those layers 1 and 2 will be regular qwertz lowercase and uppercase respectively. This way you will feel more like home, just as you wanted.

According to their documentation, they are already included in major OS's, including Linux (install instrutions) (where it is installed as keyboard variant), but I wouldn't guarantee that they would work out of the box. - In my case (ubuntu/xfce), it wasn't necessary to apt or install anything, I had only to set configurations. When following their instructions, differently from what was stated, it only worked after a reset and only in the login screen, after login qwerty came back, so more tweaking was needed. localectl list-x11-keymap-variants only lists neo and not neo_quartz. The graphical login had slightly different keyboard behavior compared to tty1-6. Be careful about not using neo instead of neo_quertz, otherwise you will be stuck trying to type your username and password in a layout you have no clue where the positions are. And don't forget: shift together with other key types it uppercase, whereas capslock together with other key types the layer3 symbol (if you have symbols in your passwords you will need to know this).

guettli avatar
in flag
Thank you for this answer. Unfortunately I see only "neo-querty" not "neo-quertz".
brunoff avatar
kr flag
I am in the opposite situation. kind of needing to get rid of neo-quertz. In my case `localectl list-x11-keymap-variants` shows only `neo`, but `neo-quertz` was accepted somehow because simply `locatectl` shows `neo_qwertz` and at least when I am logged out it is acting as a `neo` and as `qwertz`. but it is ubuntu 21.4 and xfce. so, things may differ.
Score:1
cn flag

You can edit you own keyboard mapping by editing or creating a new symbols map from an existing map in /usr/share/X11/xkb/symbols

and you can get the current value of each key on your keyboard by using the following command:

xev | grep keysym

Here is the map of adresses of each hardware keyboard key keyboard keys

good keyboarding!

vanadium avatar
cn flag
Nice answer, however it does not in any way tell how one can do this.
daniel assayag avatar
cn flag
@vanadium my answer is maybe incomplete but it gave some insights on how to dive into the problem. Also my answer was used another just above. because you didn't like my answer, was it necessary to downvote me?
vanadium avatar
cn flag
I very rarely downvote, but I think your answer hardly gives any insight in how things work, and gives hardly a clue at all on how to figure things out. "editing or creating a new symbol map": I think OP could tell that without your answer as well.
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.