Guest User

Fixing Emacs Default Keybinds

a guest
Dec 29th, 2020
3,421
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Emacs's default keybinds are of some infamy, and RSI memes abound aplenty.
  2. The simple fact is that they are not very ergonomic, at least not for modern keyboard layouts.
  3.  
  4. Luckily there's a few ways to remedy this situation.
  5.  
  6. ------------------------------------------------------------
  7.  
  8. 1. Ignore the issue entirely and pretend everything is okay
  9.  
  10. Alternatively, get yourself some foot pedals...
  11. https://www.emacswiki.org/emacs/FootSwitches
  12.  
  13. ------------------------------------------------------------
  14.  
  15. 2. Remap Ctrl to another button
  16.  
  17. There were keyboards designed for writing lisp: https://upload.wikimedia.org/wikipedia/commons/4/47/Space-cadet.jpg
  18. You'll notice that Ctrl, the most commonly used modifier key is also the closest to the spacebar.
  19. This means you can easily hit Ctrl with your thumb, instead of modern keyboards where you'll be straining to stretch your pinky to hit it.
  20.  
  21. Swapping Alt and Ctrl is common.
  22. As is swapping Ctrl and Caps Lock (though it has some issues http://ergoemacs.org/emacs/swap_CapsLock_Ctrl.html).
  23. You can do this at the OS level with xmodmap, or internally in emacs if you don't want to fuck up your other keybinds.
  24.  
  25. --------------------
  26.  
  27. Globally via your desktop environment settings:
  28. Most desktop environments use the setxkbmap utility to configure the keyboard. I'll write the instruction for the most popular ones.
  29. For GNOME (also works for Budgie, because it's basically GNOME), install gnome-tweaks package (on Ubuntu it's called gnome-tweak-tool) and run "Tweaks" program. Click on the "Mouse and keyboard" tab. From there, click the "Additional keyboard settings". You'll see all sorts of categories. You need "Ctrl key position". Click it.
  30. For KDE, open the start menu, type "keyboard". Click on "keyboard". From there, click on the "Advanced" tab. Tick the "configure keyboard options", then "Ctrl key position".
  31. For Cinnamon, open the start menu, open "Control center". Click on "Layouts" tab. Click "Options", then "Ctrl key position".
  32. For other desktop environments, you better use the CLI utility or the X.Org config file (as explained below), because their GUI applications don't support setxkbmap for all things and/or have a very unintuitive GUI. For example, in Xfce you can't choose two layout change methods or two options, etocetora. However, if you prefer, you can find the keyboard configurator in the settings.
  33.  
  34. --------------------
  35.  
  36. Globally via setxkbmap if you don't have a DE:
  37. setxkbmap -option ctrl:swapcaps
  38. or
  39. setxkbmap -option ctrl:swap_lalt_lctl
  40.  
  41. You may also want to have Caps Lock as Ctrl and Ctrl as Hyper key (Hyper key can be used for shortcuts, "H-n" means "Hyper+n"):
  42. setxkbmap -option ctrl:swapcaps_hyper
  43.  
  44. More information: man setxkbmap and man xkeyboard-config
  45. Note: you probably want to auto-execute this when your X session starts
  46.  
  47. --------------------
  48.  
  49. Globally via X.Org configuration file:
  50. 1. Create and edit /etc/X11/xorg.conf.d/00-keyboard.conf
  51. 2. Paste the following:
  52.  
  53. Section "InputClass"
  54. Identifier "system-keyboard"
  55. MatchIsKeyboard "on"
  56. Option "XkbOptions" "swapcaps"
  57. EndSection
  58.  
  59. 2.1 Put your own setxkbmap option instead of "swapcaps" on line 4 if you need it.
  60. 3. Restart X.Org or reboot.
  61.  
  62. --------------------
  63.  
  64. Globally via an xmodmap file (old method for boomers):
  65. Save as ~/.Xmodmap
  66.  
  67. ! Swap Ctrl and Alt
  68. clear control
  69. clear mod1
  70. keycode 37 = Alt_L Meta_L
  71. keycode 105 = Alt_R Meta_R
  72. keycode 64 = Control_L
  73. keycode 108 = Control_R
  74. add control = Control_L Control_R
  75. add mod1 = Alt_L Meta_L
  76.  
  77. or
  78.  
  79. ! Swap Ctrl and Capslock
  80. remove Lock = Caps_Lock
  81. remove Control = Control_L
  82. keysym Control_L = Caps_Lock
  83. keysym Caps_Lock = Control_L
  84. add Lock = Caps_Lock
  85. add Control = Control_L
  86.  
  87. Then run `xmodmap ~/.Xmodmap`
  88. Note: you probably want to auto-execute this when your X session starts.
  89.  
  90. --------------------
  91.  
  92. In Emacs only:
  93. ;; Swap Ctrl and Alt
  94. ;; V26+, X11 only
  95. (setq x-ctrl-keysym 'meta)
  96. (setq x-meta-keysym 'ctrl)
  97.  
  98. Note that many terminal binds are the same as emacs, so doing it only in emacs as opposed to globally would lead to inconsistency.
  99. For more info see https://www.gnu.org/software/emacs/manual/html_node/elisp/X11-Keysyms.html
  100.  
  101. ------------------------------------------------------------
  102.  
  103. 3. Use an external package
  104.  
  105. evil-mode: Probably the most common, as vim keys are pretty widespread and many migrants to emacs are already used to them.
  106. evil-collection and evil-escape are also nice mentions, as they make the vim experience a lot more consistent.
  107. The downside of course is that you're removing the "emacs"ness of keybinds, many prefer to stay more vanilla.
  108.  
  109. --------------------
  110.  
  111. god-mode: Unlike evil, this keeps all of emacs's keys intact, you simple map a GOD-KEY to type commands more easily.
  112. You simply hit your configured key, then every key you hit afterwards has C- prefixed to it.
  113. SPC- lets you remove C-.
  114. So <C-x> <C-f> becomes GOD-KEY x f
  115. And <C-x> b becomes GOD-KEY x SPC b
  116.  
  117. --------------------
  118.  
  119. xah-fly-keys: For the more adventurous, following neither emacs defaults nor vim, it maps keys on a usage based scheme.
  120. see for more info: http://ergoemacs.org/misc/ergoemacs_vi_mode.html
  121.  
  122. --------------------
  123.  
  124. Different typing technique: press Ctrl key with your palm, next to the base of your finger. Use modifiers on both sides of the keyboard (one hand shouldn't type a key and hold down a modifier at the same time) if it feels awkward.
  125. Note: this is not possible on low profile, flat keyboards that you'll find on laptops and some rubber dome keyboards such as Logitech K810.
  126.  
  127. OR
  128.  
  129. Use both Ctrl keys and use your ring/middle/index fingers instead of the pinky.
  130.  
  131. --------------------
  132.  
  133. Sticky keys via xkbset. The advantage to this is that you don't have to hold down a key.
  134. xkbset sticky -twokey latchlock ## set sticky keys, don't disable via twokey
  135.  
  136. More info in the man pages.
  137. --------------------
  138.  
  139. Other links:
  140.  
  141. https://www.emacswiki.org/emacs/MovingTheCtrlKey
  142. https://www.emacswiki.org/emacs/RepeatedStrainInjury
RAW Paste Data