Keyboard remapping SHIFT_L to '(' and holding SHIFT_L to normal SHIFT_L) If I just pressed SHIFT_L (i.e. left shift button), I want it to type ( &amp; if I am using SHIFT_L for a combination to work it like normal SHIFT_L.

Eg:

(typed key) ==&gt; (expectation)
SHIFT_L     ==&gt; (
SHIFT_L + e ==&gt; E


How can I achieve this?
To change the behavior of SHIFT_L (and SHIFT_R) download, install and start Karabiner.

Open the menulet Karabiner -> Preferences... in the menubar, search for shift and enable the custom key binding like in the example below (FYI KeyRemap4MacBook shown in the screenshot is the predecessor of Karabiner):



This enables writing ( by simply pressing SHIFT_L and ) by simply pressing SHIFT_R using an us-american keyboard layout with the keys 9|( and 0|). In combination with letters the common function is kept.

If you have a different keyboard layout (e.g. german with 8|( and 9|) you have to create a custom key binding. Open the tab Misc &amp; Uninstall. Then open Open private.xml and add:

&lt;?xml version="1.0"?&gt;
&lt;root&gt;
  &lt;item&gt;
    &lt;name&gt;Change Shift Keys&lt;/name&gt;
    &lt;item&gt;
      &lt;name&gt;Shift to Shift&lt;/name&gt;
      &lt;appendix&gt;(+ When you type (left or right) Shift only, send the appropriate parenthesis on german keyboard)&lt;/appendix&gt;
      &lt;identifier&gt;remap.shiftparensgerman&lt;/identifier&gt;
      &lt;autogen&gt;__KeyOverlaidModifier__ KeyCode::SHIFT_L, ModifierFlag::SHIFT_L | ModifierFlag::NONE, KeyCode::SHIFT_L, KeyCode::KEY_8, ModifierFlag::SHIFT_L&lt;/autogen&gt;
      &lt;autogen&gt;__KeyOverlaidModifier__ KeyCode::SHIFT_R, ModifierFlag::SHIFT_R | ModifierFlag::NONE, KeyCode::SHIFT_R, KeyCode::KEY_9, ModifierFlag::SHIFT_R&lt;/autogen&gt;
    &lt;/item&gt;
  &lt;/item&gt;
&lt;/root&gt;


Save the file, switch back to Change Key, press ReloadXML ad enable the new key binding. Usually it's the first one listed.