I use i3wm, and to map cap lock to escape, I run:

setxkbmap -option caps:swapescape

This works fine, but sometimes while hitting the F1 key, my pinky can accidentally hit the Escape key, which turns on CapsLock.

Gnome has a very nice way to do this, where Shift + Escape = CapsLock. Hitting Escape on its own will do nothing.

      • promitheas@programming.dev
        link
        fedilink
        arrow-up
        4
        ·
        27 days ago

        I switched because of neovim, and got used to it. I was never the kind of guy to press caps to type capitals, always just kept shift pressed down with my pinky, so i basically never used the caps key anyway

  • gomp@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    27 days ago

    I don’t use that so I’m mostly shooting in the dark, but… does caps:escape_shifted_capslock do what you want?

    (source: localectl list-x11-keymap-options | grep esc)

  • degen@midwest.social
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    27 days ago

    I use keyd for software remapping now, and I like it a lot more than xkb’s esoteric options. It has functionality for layers like layer:C, where any “passthrough” input will have the defined modifier (or combo like C-S-M), but you can define whatever other bindings inside.

    Long story short, I’ve used it to remap caps, control, shift (with a custom shift layer for some symbols), and meta, with overloads, double tap/hold into layers, oneshots, timeouts, and all sorts of (surprisingly fluid) nonsense. It’s so much easier than wading through xkb options for me.

    To sidestep the question slightly less, I always got rid of capslock altogether instead of swapping. That still leaves true escape to be hit accidentally, but I think there should be an option to change escape too?

    Edit: what I always used was

    # make CapsLock behave like Ctrl:
    setxkbmap -option ctrl:nocaps
    
    # make short-pressed Ctrl behave like Escape:
    xcape -e 'Control_L=Escape'
    

    from here