#!/bin/bash align() { sed '/\/ d /\/ d /\/ d /\/ d /\/ d /\/ d /\/ d /\/ d /\/ d /\/ d /\/ d /\/ d /\/ d /\/ d' } echo 'var xKeysNormal = map[string]int{' { paste -d ' ' <(xmodmap -pke | sed '1 d; s/.*= /"/; /.*=/ d; s/ .*/":/' | sed '/^"XF86Eject"/ { N; s/.*\n// }') \ <(go doc uinput.keyesc | sed '/Key/ !d; s/^\s*/uinput./; s/ .*/,/' | align) | # Skip really non-matching section, we echo some of them below sed '/^"XF86Tools"/,/^"XF86AudioPreset"/ d' | # Remove duplicate keys sed '/^"XF86Mail":.*Email/ d; /^"Cancel":.*Stop/ d; /^"XF86Send":.*file/ d; /^"Print":.*Sysrq/ d' echo '"XF86WebCam": uinput.KeyCamera,' echo '"Print": uinput.KeyPrint,' } | sed 's/^".*"/\L&/; s/^/\t/' echo '}' echo '' echo 'var xKeysShifted = map[string]int{' { paste -d ' ' <(xmodmap -pke | sed '1 d; s/.*= /"/; /.*=/ d; s/\S* /"/; s/ .*/":/' | sed '/^"XF86Eject"/ { N; s/.*\n// }') \ <(go doc uinput.keyesc | sed '/Key/ !d; s/^\s*/uinput./; s/ .*/,/' | align) | sed '/^"NoSymbol"/ d; /^\S*_[LR]"/ d' | # Remove backspace and duplicate keys sed '/^"BackSpace"/ d; /^"KP_Decimal":.*Kpcomma/ d; /\/ d' } | sed 's/^".*"/\L&/; s/^/\t/' echo '}'