Better terminal in Mac OS X -- reversing the control and command key-mappings - macos

I'm trying to have the same KDE Konsole experience within Mac OS X.
Here's my (overly complicated?) setup:
I have Control and Command swapped at the System Preferences level. (Can't live without this)
Parallels lets you, at the Parallels application level, also reverse Control and Command. So I can undo the System Preferences setting (and get the setup I want within virtual Linux)
I want this same per-application-opt-out for the Mac OS X Terminal app. Is it possible?

The solution you're looking for is KeyRemap4MacBook. There is a Tiger, Leopard, Snow Leopard, and Lion version.
Once installed, goto System Preferences -> KeyRemap4MacBook
Then select the following options:
Change Command_L Key (Left Command)
---> Command_L to Control_L (except Terminal, Virtual Machine, RDC)
Change Control_L Key (Left Control)
---> Control_L to Command_L (except Terminal, Virtual Machine, RDC)
You can repeat this for Command_R (Right Command) and Control_R (Right Control) also if you desire. Tested and working on my Macbook.

You can simply ssh into the Linux/Unix system and run X11 programs direct to your Mac screen: ssh -X user#host_or_ipaddress, login, and just run the X11 programs you want (e.g. emacs&) and the X11 apps will appear on the Mac display.
Pros:
X11 windows work just like any other window, including Exposé goodness, etc...
No need to work only inside the Parallels console window
Same solution works with any Linux/Unix system, remote or virtual
ssh connection is secure even over the internet
Tech info:
"ssh -X" turns on X11 forwarding for the ssh connection, i.e. the X11 display connection is tunneled through ssh securely
"ssh -X" also handles X11 authentication tunneling
X11.app is automagically started on OSX by launchd when needed
X11 can connect to displays over the network, which is one of the few cool things about it ;-)

There is very good and key-mapping flexible terminal: iTerm2
My favorite set: iTerm + zsh + oh-my-zsh

The 2016 solution is to use Karabiner open-source program which allows you to remap modifier and other keys with very fine granularity, for example
Remap only the left ⌘ Cmd or Option key.
Remap a key only for specific applications, e.g. only inside Terminal, Emacs, or virtual machine.
For example, here's how to remap left ⌘ Cmd key to act as Ctrl only inside Terminal (and leave the right one unaffected so that you could still use e.g. ⌘ Cmd + Tab to switch between apps):

You can customize the command keys used for an individual application in System Preferences > Keyboard & Mouse > Keyboard Shortcuts. I think (if I understand correctly what you're trying to do) that this might allow you to accomplish your goal. You could remap all of Terminal's command keys to use control instead of command, to get them out of your way... but then you might need to do a lot of customization on the machines you ssh into, so that they use Command instead of control
It seems that you're going to have to do an ENORMOUS amount of work just to allow you to use your pinky instead of your thumb for the modifier key.
Another possibility: user preferences can be manipulated by the "defaults" command. I haven't been able to find a way to use this to control they modifier key mappings, but it should logically be possible (if you're willing to do a lot of digging). If so, then you could write short scripts to switch back and forth between Mac default and your swapped mode. Trigger the scripts with Quicksilver, and whenever you use Terminal you can call one script, and whenever you leave it you can call another. Again, a big pain to achieve what you want, but it might be possible.
I don't think there's a clean and simple solution.
I've seen third-party programs that give more control over manipulating modifier keys, if you're willing to install them (probably kernel extensions). They might be able to do what you want, but I don't recall the names. If you google for programs to fix emacs and vi keys you might find them.
Good luck.

I had exactly the same problem as you. I've remapped Command to CAPS Lock, and Control to Command, but as a frequent Linux user I want both setups to be as similar as possible. This is how I solved it:
Install Keyboard Maestro (not free, but totally worth it), and set it up to run at login.
Inside KM, define macros to send CMD+{key} to CTRL+{key} inside Terminal.
If you want to remap a lot of keys this is a lot of work. But I've already done it myself, you can just download this file kmmacros. Double-clicking is enough to install it. A couple of caveats:
You need to set Terminal to use option as a meta key (Terminal > Preferences > Keyboard).
The bindings are only for emacs-mode. This cheat sheet should be helpful.
Most default shortcuts don't work anymore (CMD-N, CMD-C, ...), and the menu in Terminal does not reflect this. For some conflicts (New Window, Close Window), I've taken the ones from Gnome.

Related

How does VS Code use the help/insert key "normally" on macOS? (Not have it intercepted)

I'm using macOS Catalina on an iMac with a WASD Keyboard configured for Mac use. The keyboard includes the usual PC keyboard bank of six keys of Insert/Home/Page Up and Delete/End/Page Down.
I run the current (auto updating) VS Code. It just works, including the Insert key for toggling Insert/Overwrite.
Most applications, including Terminal and Xquartz, can't see the Insert (Help) key. No input is registered if you press the key.
How is VS Code able to see the Insert/Help key when pressed?
The answer is, VS Code is not special. Rather XQuartz has an option to enable key equivalents (Cmd-Q, Cmd-W, etc.) under X. This also causes the interception of the Insert key.
You may disable this for behavior ALL X applications at once via the X11 Preferences or via the command:
defaults write org.macosforge.xquartz.X11 enable_key_equivalents -boolean false
Reference: https://www.manpagez.com/man/1/Xquartz/

Run a Applescript on a locked Mac by keypress or alternative options

I have an Applescript written for a specific purpose that launches an application and performs a couple of tasks. I would like to be able to run this script by pressing a key on my keyboard, however, while the Mac is locked. (Note: Mac is only locked, not "asleep")
I'm open to alternative options, if such (or more efficient) options exist.
The above scenario is my "ideal" configuration, the only thing I don't have flexibility on, is that the mac must stay locked for this process.
I have full administrative access to the Mac.
I would suggest you use ssh to "get into" your Mac while the screen is locked and then run your script from the shell. You would probably use osascript for that if it is Applescript, by the way.
In order to do this, you will need to ensure the sshd is running on your Mac by going to the Apple Menu, then System Preferences then Sharing and check the box beside Remote Login.
In order to ssh into your Mac, you could use another Mac, or a PC or the free iPhone/iPad app called Terminus which is brilliant for remotely controlling machines via ssh.
Rather than have to run a command when you log in, a technique which I often use is to have a user who can only execute a specific function and the very act of logging in does that function and then logs the user out again. So, for example, if I wanted a login that can reboot a machine, I would create a new user called reboot and instead of that user having bash in /etc/passwd as his shell, he would have /sbin/reboot as his shell. Just a thought - YMMV.
I've tried this same thing and when the Mac becomes locked, normal processing will not occur but slow to a crawl, so I had to turn my screens off instead of locking my Mac. There is no way around it.

How to add custom keyboard shortcut for terminal in apple macbook pro

I don't think there is any pre-defined keyboard shortcut for opening terminal in macbook pro. I am about to start bash so really need to call up terminal fast. Can't use spotlight every time & then write Terminal their and call it. I just bought mac so i am getting familiar with all the custom keyboard shortcuts. I searched a lot on google but i couldn't find a way to add shortcut. I was using Linux Distro's before. Adding terminal shortcut is pretty easy in linux. In some distro's its predefined with ctrl+T key. Please let me know the easy way. Thanks in advance.
I recommend using iterm2 or total terminal.
You can use control + ' to bring down a terminal whenever you need it.

Chrome Remote Desktop Keyboard Shortcut Needed

I'm using Chrome Remote Desktop on a Windows Desktop to access an Apple iMac. I cannot figure out how to invoke the Apple Command key function from my Windows keyboard. I would think that the Windows key would work but it doesn't. Is there a way to map the Windows key to the Apple Command key? I really want to be able to invoke copy and paste from the keyboard, which are Command-C and Command-V on the iMac, so I'm stuck because I don't have a "Command" key.
My solution to this problem is to leverage the handy "Configure Key Mapping" command provided by the latest version of Chrome Remote Desktop (v. 77.0 at the time of writing). The option is available in the sidebar as shown below.
Clicking the link opens the "Configure Key Mapping" dialog, from which you can create your own mapping. An important thing to note is that the keycodes supported by Chrome Remote Desktop are not the usual "ASCII" codes to which every developer is used to (I did this error myself the first time); rather, the codes should be taken from the "UI Events KeyboardEvent code Values" W3C standard. If you go through the standard you'll find the useful "List of code values for functional keys in the Alphanumeric section" table, which I also replicate below.
Concretely, let's say you want to map your local (Windows) Ctrl key to the remote (Mac) Cmd key. From the table above we see that the code for the (left) Ctrl key is "ControlLeft", while the code for the Cmd key is "MetaLeft", so from the "Configure Key Mappings" dialog:
click "New Mapping"
enter "ControlLeft" in the "from" field
enter "MetaLeft" in the "to" field
if needed, click [New Mapping] to enter more key mappings
the configuration should now look like in the image below. Click [Done] to close the dialog window.
At this point you should be able to use Ctrl-C, Ctrl-V etc. on your local PC to trigger the corresponding Cmd-C, Cmd-V etc. commands in the remote Mac. The solution works quite well for me and it resolves a perennial problem of how to use the Cmd button while on a Windows PC without having to rely on external apps or plugins.
I'm on a Windows 10 machine remoting into an El Capitan Mac (yes, it's an old OS, but it's a 2009 model that can't be upgraded any higher). If the other solutions don't work for you (they didn't for me), you can try adding Mac keyboard shortcuts in Keyboard settings. I use this mac as a home server and only use it via Chrome Remote Desktop, so I am not worried about messing up keyboard shortcuts when using the computer's keyboard directly.
Go to Settings > Keyboard > Shortcuts > App Shortcuts and add new shortcut mappings for Copy and Paste to the Ctrl key.
On Windows 10
Alt + Window + C
Alt + Window + V
On an Acer C7, the right control key maps to command. In fact, the Search key maps to command too, which is far more helpful, but available on fewer keyboards.
Well, it seems I can use the Windows Key to send the CMD Key straight away to the Mac machine. I have tried:
Windows + C: copy
Windows + V: paste
Windows + X: Cut
Windows + W: close window
Windows + Q: close application
All work nice!
However you can't use this:
Windows + Tab: switch between applications,
it is already used by Windows for the same function.
But you can still use "holding the mouse middle wheel and moving the mouse up" to see all open applications. It is a little bit painful, but does most jobs.
If things don't work - try map MetaRight to ControlLeft
I have windows keyboard connected to a mapbook. I had to swap the modifier keys: Command <-> Control.
The problem was that when connecting with the Chrome Remote Desktop to a Linux machine, the remapping MetaLeft to ControlLeft did not work. Turned out it's because the macbook remapped the left key to the MetaRight what whatever reason.
I have confirmed, using chrome remote desktop, that search+another_key does the same as CMD+another_key while remote-connected to my mac-book pro over home WiFi. I also noted that if I want to enter two search+another_key presses sequentially, I must release and repress the search key after each instance
You can map keybindings, just not that im on a mac remoting to a windows PC (with a windows keyboard) and I noticed that MetaRight is the windows key (as oppose to Meta left).
If you want to use e.g. WIN-key + C to represent Cmd + C on mac, other than "Configure key mappings" (WIN-key seems mean Cmd on mac by default?), you need to go to full-screen checkbox by the right-side's blue-sliding bar (F11 doesn't work for me).
Only in that full-screen mode, WIN-key + something is not occupied by the Windows OS.
Go Full-Screen first
In order to use all shortcut keys, you need to go full screen from the Windows PC that is accessing the Mac. This option can be found in the side menu on the right.
Then use the ⊞ Win key for all the ⌘ Cmd key shortcut keys on Mac

Synergy between mac and pc change mac hotkeys

Synergy is a program that enables you to use the same mouse and keyboard in two computers. I have a PC and mac connected directly with an Ethernet cable therefore the connection is great and it seems as if there is only one computer.
I am developing an iPad application and the only software that I have found that supports iwebkit for CSS is Expresso. I use that to edit my CSS files in the mac and I use dream weaver on my PC to edit PHP, HTML and JavaScript files. The only problem is that I am constantly using both computers to develop the application and its very frustrating using different shortcut keys for each computer. It would be very nice if I could use the same hot-keys on both computers.
So far I have tried:
Changing the modifier keys in the keyboard section under system preferences in the mac. That works but just with the keyboard from the mac not with the keyboard that I am using with synergy that controls both computers.
Creating applescripts that what they do is to send a shortcut key then compiling them and saving them as an application. After they are saved as an application I go to system preferences and try to run them with a different shortcut key. when I create that shortcut key system preferences crashes and closes without saving the changes.
Creating shortcut keys in synergy which it works but only in one computer. Synergy will always send the same keystroke regardless on which computer you are using.
Lastly I have tried looking for "IronAHK" which in a lot of posts people say it modifies the mac hotkeys but I have not been able to find it for the mac.
Is there a way to have the same universal access keys across my machines?
THe following article was very helpful for me (working from a Mac, controlling a PC):
http://www.nextofwindows.com/how-to-properly-map-keyboard-between-mac-and-pc-when-share-mouses-with-synergy/
Step 1: Configure Server
Step 2: Double-click on the PC (or Mac if the Server is a PC)
Step 3: Toggle the key Ctrl and Super to mirror each other
When adding a new computer in synergy you can change command and control keys. Here is an example in windows. I was not able to find it because synergy place this in a location where I never thought I could find it.
Now I can use control + c to copy files both in the mac and in the pc and most of the command such as control + a to select everything etc. To fix the other issues so that I can use 'home' to go to the beginning of the line for example I use the program provided by Evan Moran which was the first answer in this post.
For the mac I use KeyRemap4MacBook. It is pretty good for being free.
That said, consider using different source editors so that you can code only on one system. This will make your life a ton easier. Dreamweaver is not necessarily the best. Visual Studio is pretty good on Javascript, CSS, and HTML, and their express versions are free.
If all you need is syntax highlighting EditPlus is great on the PC and will work on all languages you mentioned. If you need to stay on a mac then TextWrangler is great as a basic source editor. Both have free trials. Good luck!

Resources