Created
October 22, 2013 00:32
-
-
Save awwaiid/7093309 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
use strict; | |
use IO::Handle; | |
STDOUT->autoflush(); | |
STDERR->autoflush(); | |
print "1\n"; | |
my $is_swapped = `xmodmap -pke | grep 'keycode 10 = exclam'`; | |
print "2\n"; | |
my $is_qwerty = `xmodmap -pke | grep 'keycode 39 = s'`; | |
my $keymap_unswapped = q{ | |
keycode 10 = 1 exclam 1 exclam | |
keycode 11 = 2 at 2 at | |
keycode 12 = 3 numbersign 3 numbersign | |
keycode 13 = 4 dollar 4 dollar | |
keycode 14 = 5 percent 5 percent | |
keycode 15 = 6 asciicircum 6 asciicircum | |
keycode 16 = 7 ampersand 7 ampersand | |
keycode 17 = 8 asterisk 8 asterisk | |
keycode 18 = 9 parenleft 9 parenleft | |
keycode 19 = 0 parenright 0 parenright | |
keycode 34 = bracketleft braceleft bracketleft braceleft | |
keycode 35 = bracketright braceright bracketright braceright | |
}; | |
my $keymap_swapped = q{ | |
keycode 10 = exclam 1 exclam 1 | |
keycode 11 = at 2 at 2 | |
keycode 12 = numbersign 3 numbersign 3 | |
keycode 13 = dollar 4 dollar 4 | |
keycode 14 = percent 5 percent 5 | |
keycode 15 = asciicircum 6 asciicircum 6 | |
keycode 16 = ampersand 7 ampersand 7 | |
keycode 17 = asterisk 8 asterisk 8 | |
keycode 18 = parenleft 9 parenleft 9 | |
keycode 19 = parenright 0 parenright 0 | |
keycode 34 = braceleft bracketleft braceleft bracketleft | |
keycode 35 = braceright bracketright braceright bracketright | |
}; | |
my $keymap_colemak = q{ | |
keycode 24 = q Q adiaeresis Adiaeresis | |
keycode 25 = w W aring Aring | |
keycode 26 = f F atilde Atilde | |
keycode 27 = p P oslash Ooblique | |
keycode 28 = g G dead_ogonek asciitilde | |
keycode 29 = j J dstroke Dstroke | |
keycode 30 = l L lstroke Lstroke | |
keycode 31 = u U uacute Uacute | |
keycode 32 = y Y udiaeresis Udiaeresis | |
keycode 33 = semicolon colon odiaeresis Odiaeresis | |
keycode 38 = a A aacute Aacute | |
keycode 39 = r R dead_grave asciitilde | |
keycode 40 = s S ssharp asciitilde | |
keycode 41 = t T dead_acute dead_doubleacute | |
keycode 42 = d D dead_diaeresis asciitilde | |
keycode 43 = h H dead_caron asciitilde | |
keycode 44 = n N ntilde Ntilde | |
keycode 45 = e E eacute Eacute | |
keycode 46 = i I iacute Iacute | |
keycode 47 = o O oacute Oacute | |
keycode 52 = z Z ae AE | |
keycode 53 = x X dead_circumflex asciitilde | |
keycode 54 = c C ccedilla Ccedilla | |
keycode 55 = v V oe OE | |
keycode 56 = b B dead_breve asciitilde | |
keycode 57 = k K dead_abovering asciitilde | |
keycode 58 = m M dead_macron asciitilde | |
}; | |
my $keymap_qwerty = q{ | |
keycode 24 = q Q q Q | |
keycode 25 = w W w W | |
keycode 26 = e E e E | |
keycode 27 = r R r R | |
keycode 28 = t T t T | |
keycode 29 = y Y y Y | |
keycode 30 = u U u U | |
keycode 31 = i I i I | |
keycode 32 = o O o O | |
keycode 33 = p P p P | |
keycode 38 = a A a A | |
keycode 39 = s S s S | |
keycode 40 = d D d D | |
keycode 41 = f F f F | |
keycode 42 = g G g G | |
keycode 43 = h H h H | |
keycode 44 = j J j J | |
keycode 45 = k K k K | |
keycode 46 = l L l L | |
keycode 47 = semicolon colon semicolon colon | |
keycode 52 = z Z z Z | |
keycode 53 = x X x X | |
keycode 54 = c C c C | |
keycode 55 = v V v V | |
keycode 56 = b B b B | |
keycode 57 = n N n N | |
keycode 58 = m M m M | |
}; | |
print "3\n"; | |
my $keymap; | |
if($is_swapped && $is_qwerty) { | |
system("notify-send 'Swapped Colemak'"); | |
print "3.1\n"; | |
$keymap = $keymap_swapped . $keymap_colemak; | |
} | |
elsif($is_swapped && ! $is_qwerty) { | |
# Let's switch to unswapped and qwerty | |
system("notify-send 'Un-swapped QWERTY [BORING]'"); | |
print "3.1\n"; | |
$keymap = $keymap_unswapped . $keymap_qwerty; | |
} | |
else { | |
system("notify-send 'swapped QWERTY'"); | |
print "3.1\n"; | |
$keymap = $keymap_swapped . $keymap_qwerty; | |
} | |
print "4\n"; | |
# Execute the new xmodmap | |
system(qq{echo "$keymap" | xmodmap -}); | |
print "5\n"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment