Mac
Go to the system settings and change the Capslock behaviour to Option/Alt:
Now download the following software:
http://pqrs.org/macosx/keyremap4macbook/
Go to system settings --> keyremap4mac --> Misc & Uninstall --> Open private.xml
Then insert the following:
<?xml version="1.0"?> <root> <item> <name>Myzinsky Umlaute</name> <appendix>Umlaute accesible with CAPSLOCK + aeiou</appendix> <identifier>private.myzinsky.umlaute</identifier> <autogen> --KeyToKey-- KeyCode::O, ModifierFlag::OPTION_L | VK_SHIFT | ModifierFlag::NONE, KeyCode::U, ModifierFlag::OPTION_L, KeyCode::O, VK_SHIFT </autogen> <autogen> --KeyToKey-- KeyCode::O, ModifierFlag::OPTION_L | ModifierFlag::NONE, KeyCode::U, ModifierFlag::OPTION_L, KeyCode::O </autogen> <autogen> --KeyToKey-- KeyCode::A, ModifierFlag::OPTION_L | VK_SHIFT | ModifierFlag::NONE, KeyCode::U, ModifierFlag::OPTION_L, KeyCode::A, VK_SHIFT </autogen> <autogen> --KeyToKey-- KeyCode::A, ModifierFlag::OPTION_L | ModifierFlag::NONE, KeyCode::U, ModifierFlag::OPTION_L, KeyCode::A </autogen> <autogen> --KeyToKey-- KeyCode::U, ModifierFlag::OPTION_L | VK_SHIFT | ModifierFlag::NONE, KeyCode::U, ModifierFlag::OPTION_L, KeyCode::U, VK_SHIFT </autogen> <autogen> --KeyToKey-- KeyCode::U, ModifierFlag::OPTION_L | ModifierFlag::NONE, KeyCode::U, ModifierFlag::OPTION_L, KeyCode::U </autogen> <autogen>- -KeyToKey-- KeyCode::S, ModifierFlag::OPTION_L | ModifierFlag::NONE, KeyCode::S, ModifierFlag::OPTION_L </autogen> </item> </root>
Reload the XML and activate this profile, now you can write an Ü with: [caps] + [shift] + [u]
and an ß with [caps] + [s]
Linux
Under Linux it is much easier:
create the .Xmodmap file in your home and insert:
keycode 66= Mode_switch Multi_key keycode 39= s S ssharp keycode 38= a A adiaeresis Adiaeresis keycode 30= u U udiaeresis Udiaeresis keycode 32= o O odiaeresis Odiaeresis keycode 26= e E EuroSign EuroSign
Windows
Under Windows the the tool AutoHotKey can be used:
#SingleInstance force #InstallKeybdHook SetCapslockState, AlwaysOff CapsLock & a::CSend("ä", "Ä") CapsLock & u::CSend("ü", "Ü") CapsLock & o::CSend("ö", "Ö") CapsLock & e::CSend("€") CapsLock & s::CSend("ß") CSend(p_normal, p_shifted="") { key:=(!GetKeyState("Shift") ? p_normal:p_shifted) Send, %key% }
Source: JSLover