support (shift+)meta (alt) key combinations
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 14 Mar 2009 00:24:27 +0000 (00:24 +0000)
committerMischa POSLAWSKY <perl@shiar.org>
Wed, 22 Apr 2009 00:01:20 +0000 (00:01 +0000)
Shiar_Sheet/Keyboard.pm
base.css
terse.css

index d8d8274..6ba2a4a 100644 (file)
@@ -5,11 +5,13 @@ use warnings;
 no  warnings 'uninitialized';  # save some useless checks for more legible code
 use Carp;
 
-our $VERSION = '1.01';
+our $VERSION = '1.02';
 
-my @casedesc = qw(ctrl shift);
+my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta');
 my @rowdesc = qw(numeric top home bottom);
 my %keyrows = do 'keys.inc.pl';
+# add first two cases of each row again with each char prepended by + (alt)
+push @$_, map { [map {"+$_"} @$_] } @$_[0,1] for map {@$_} values %keyrows;
 
 my %keytrans = qw(
        ^@ NUL ^a SOH ^b STX ^c ETX  ^d EOT ^e ENQ ^f ACK ^g BEL
@@ -45,6 +47,7 @@ sub map {
 sub escapeclass {
        local $_ = shift;
        s/\^/_c/g;
+       s/\+/_m/g;
        s/\[/_sbo/g;
        s/\]/_sbc/g;
        s/^$/_/;
@@ -63,7 +66,7 @@ sub keyunalias {
        my $self = shift;
        my ($key, $ancestry) = @_;
 
-       $key =~ s/(\S*?)(\^?\S)($|\s.*)/$2/;
+       $key =~ s/(\S*?)(\+?\^?\S)($|\s.*)/$2/;
        my $mode = $1;
        my $keyinfo = $self->{keys}->{$mode}->{$key};
 
index 7b15052..989f8be 100644 (file)
--- a/base.css
+++ b/base.css
@@ -119,11 +119,13 @@ ul.keys li b[title] { /* mnemonic hover */
 ul.keys li[onclick]:hover { /* link */
        cursor: pointer;
 }
+ul.keys.meta li b,
 ul.keys.ctrl li b,
 ul.keys.lead li b { /* char with ctrl or leading key */
        font-size: 100%; /* space is too limited for 2+ double-sized chars */
        line-height: 5ex; /* keep double height though */
 }
+ul.keys.meta li b small,
 ul.keys.ctrl li b small { /* meta key indicator */
        font-size: 70%;
        font-weight: normal; /* nice and subtle */
index 667a2e3..502bb5f 100644 (file)
--- a/terse.css
+++ b/terse.css
@@ -3,6 +3,7 @@ body ul.keys li {
        width: 4.5em;
 }
 body ul.keys li b,
+body ul.keys.meta li b,
 body ul.keys.ctrl li b,
 body ul.keys.lead li b { /* leading chars always fit */
        position: absolute; /* background */