Software Requirements for Code Creation / Editor with RSI Type Symptoms (unusable fingers)

Deadly 提交于 2019-11-29 08:10:53

Default Emacs bindings make heavy use of modifier keys; however there are alternatives to the defaults, without necessarily requiring you to manually customise all the bindings.

Vi/Vim may be a good choice of alternative editor, as rather than using modifier keys to initiate commands, you switch between "insert mode" (in which the keys you type produce text), and "command mode" (in which the keys you type trigger editing commands), so you would rarely (if ever?) need to hold multiple keys at the same time.

Emacs may still be desirable, though. An advantage of Emacs is the degree to which it can integrate with many other processes and applications, thus giving you a familiar keyboard interface to many activities besides editing text. I would say this is far more the case under Unix than Windows, but I'm sure there are still benefits.

There are also ways to use the Vi approach within Emacs, which may be an even better answer. I understand that the evil-mode package ("extensible vi layer for Emacs") is the most comprehensive approach to using vi-style bindings in Emacs.

I'm not a vi user myself, so I'll leave it to others to provide details.

Keeping with the modal editing approach, God Mode gives you Vi-like modal separation, but using the familiar Emacs key sequences (follow the link to make better sense of that statement). The author says "You'll find that this mode comes surprisingly naturally and that you already know how to run your existing Emacs commands."

Leaving modal editing aside, packages such as ErgoEmacs endeavour to provide friendlier keybindings than the defaults, and may be useful.

A custom approach I read about (used by Xah Lee) was to dedicate certain keys as prefix bindings through which everything else could be accessed without modifiers. This is simple for some kinds of binding, and requires effort in other cases (probably in most cases, realistically).

For example, a great many bindings start with the prefix C-x (ctrl+x), but it's possible to assign that entire prefix to a sequence which doesn't require a modifier. e.g.: (global-set-key (kbd "<f6> x") 'Control-X-prefix) would allow you to type F6 followed by x instead of holding down Ctrl while typing x.

Other similar reassignments will not be so trivial, but it's all possible.

More generally (and so perhaps more usefully; certainly with less customisation) you can send any modified key using custom (and thus potentially modifier-free) sequences.

The event-apply-*-modifier functions (for shift, control, meta (your Alt key), super, hyper, & alt (not your Alt key)) are the trick to doing this. When called, they read the next key from the user, and then apply the required modifier to that key, passing the result through as if it had been typed using the real modifier key.

The following would use the number keys on the keypad to represent all the modifier keys. You could then type the sequence C-xC-b as 1x1b.

(define-key function-key-map (kbd "<kp-1>") 'event-apply-control-modifier)
(define-key function-key-map (kbd "<kp-2>") 'event-apply-meta-modifier)
(define-key function-key-map (kbd "<kp-3>") 'event-apply-super-modifier)
(define-key function-key-map (kbd "<kp-4>") 'event-apply-shift-modifier)
(define-key function-key-map (kbd "<kp-5>") 'event-apply-hyper-modifier)
(define-key function-key-map (kbd "<kp-6>") 'event-apply-alt-modifier)

You'd need to do some extra work to enable you to combine multiple modifiers for a single key, but it's possible.

The elisp manual page on Modifying and Translating Input Events is also relevant:
C-hig (elisp) Event Mod RET

A completely different approach would be to use foot pedals (or some other input device; e.g.: http://xkeys.com/xkeys.php) to enable you to use the modifier keys as intended, without the need to rebind anything at all.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!