From 79f8945f7b66f8cf1ba1f1b84567665a051a76ff Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sat, 14 Mar 2009 00:24:27 +0000 Subject: [PATCH] support (shift+)meta (alt) key combinations --- Shiar_Sheet/Keyboard.pm | 9 ++++++--- base.css | 2 ++ terse.css | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Shiar_Sheet/Keyboard.pm b/Shiar_Sheet/Keyboard.pm index d8d8274..6ba2a4a 100644 --- a/Shiar_Sheet/Keyboard.pm +++ b/Shiar_Sheet/Keyboard.pm @@ -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}; diff --git a/base.css b/base.css index 7b15052..989f8be 100644 --- 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 */ diff --git a/terse.css b/terse.css index 667a2e3..502bb5f 100644 --- 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 */ -- 2.30.0