this post was submitted on 18 Aug 2023
34 points (97.2% liked)

Linux

48208 readers
854 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

You know how cursor behaves in practically any text field / text area / command line, where arrow keys move cursor by single character, but holding down Ctrl while pressing arrow keys moves cursor by whole word.

What kind of wizardry would one do in order to switch this around?
As in, make the move-by-word the default behaviour, but make holding down Ctrl move cursor by just a single character? Some keyboard input binding, where ⬅ is an alias for Ctrl+⬅ ? But no idea how to make the opposite of this. Make Ctrl+⬅ an keyboard shortcut for xdotool key Left or something?
Does a setting like this already exist?

Also not sure if /c/linux is the most appropriate community for this question. Feel free to suggest more appropriate one or even cross-post to there.
Thank you

all 4 comments
sorted by: hot top controversial new old
[–] gamma@programming.dev 9 points 1 year ago* (last edited 1 year ago)

I'm pretty sure both are possible in xkb. But you'll have to learn how to get a custom xkb_keymap into your DE of choice. I only learned enough to do one mapping:

xkb_keymap {
	xkb_keycodes  { include "evdev+aliases(qwerty)" };
	xkb_types     { include "complete" };
	xkb_compat    { include "complete" };
	xkb_symbols   {
		include "pc+us+inet(evdev)"
		key  {
			type= "TWO_LEVEL",
			symbols[Group1] = [  Multi_key,                Caps_Lock ],
			actions[Group1] = [ NoAction(), LockMods(modifiers=Lock) ]
		};
		key  {[ Escape ]};
	};
	xkb_geometry  { include "pc(pc105)" };
};

This remaps Capslock to Escape, Escape to Compose, and Shift+Escape to Capslock. Not what you want, but hopefully this will give you a starting point to playing/breaking xkb.

Another benefit of doing this with xkb: it's now a separate codebase from X.org, and is used in every Wayland compositor I know of.

[–] tetra@feddit.de 6 points 1 year ago (1 children)

For shells (and other programs) using GNU readline for interactions and line-edits (like bash), some of this can be achieved with an ~/.inputrc configuration file, e.g., mapping the correct key sequence for your terminal emulator to the backward-word move command. You can look up these sequences using infocmp -L1 or interactively using sed -n l.

Most other shells use their own command line handling routines and configuration though, so this won't work for e.g., zsh or fish.

[–] yum13241@lemm.ee 2 points 1 year ago

Now does this have anything to do with why my ZSH outputs ;5D everytime I press Ctrl+Left Arrow?