frobware / cmd-key-happy

Swap cmd and alt keys in Terminal (useful when running emacs over ssh)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

Swap cmd and alt (or command and option) keys in Mac OS X (macOS).

This program allows you to swap the command and alt (or option) keys in any application, but in particular Terminal.app. This can be extremely handy when ssh'ing into other UN*X boxes and running "emacs -nw". It also allows you to have the traditional readline navigation work properly when using Bash (i.e., alt-backspace, alt-f, alt-b, etc) in the Terminal.

The decision to swap the keys is based on a customizable script (Lua). This script allows you to exclude certain key combinations per application, or globally. For example, "cmd-tab" is an exclusion in my Lua script regardless of which application is running, as I still want this key combination to cycle the active set of applications. I have "cmd-c" and "cmd-v" as exclusions when the front most application is the Terminal -- these combinations are so universal that I find it easier to leave them as they are -- but all other key combinations involving the cmd key get swapped with alt.

The motivation for this program was the many years of hitting alt- in Linux only to find that it does not generate the same behaviour in Terminal.app. Having the ability to run "emacs -nw" from within Terminal.app is now useable!

Mavericks

If you upgrade to Mavericks you'll get the following error "failed to create event tap!" when cmd-key-happy starts. The granularity of using the accessibility APIs which is what cmd-key-happy depends on is both different and now much finer. To fix this please reread the INSTALL file.

Note (1 Feb 2017): I rewrote this in C++ (see cpp directory) some years ago and it is probably the better implementation for newer versions of macOS but I never promoted it as I have stopped using macOS on a regular basis.

About

Swap cmd and alt keys in Terminal (useful when running emacs over ssh)

License:MIT License


Languages

Language:C 56.4%Language:HTML 33.6%Language:Objective-C++ 3.0%Language:C++ 2.0%Language:Objective-C 1.8%Language:Makefile 1.4%Language:Roff 0.5%Language:CMake 0.3%Language:Lua 0.3%Language:Python 0.2%Language:Shell 0.2%Language:CSS 0.2%Language:Cython 0.1%