package KeyboardHangul; #### ============================================================= #### #### KeyboardHangul.pm --- Keyboard to Unicoded Hangul Convertion #### #### Copyright(C) 1998 Kawasaki Yuusuke #### #### Modified by Dan Taeyoung Lee #### #### Code now uses Korean input for standard 2-bul keyboard #### #### ========================================================= #### $VERSION = "0.20"; sub Unicode($){ local( $_ ) = @_; local( $ucs, $ini, $peak, $fin, @result ); # tr/A-Z/a-z/; # this is not done, as capital letters are needed while( $_ ne "" ){ if( s/^ // ){ push @result, unpack( "C", $& ); }elsif( s/^\s*$exp_hangul//io ){ ( $ini, $peak, $fin ) = ( $1, $2, $3 ); if( $fin && /^($exp_peak)/io ){ $fin =~ s/($exp_initial)$//io; $_ = $&.$_; } $ucs = 0xAC00 + $map_initial{$ini} * 21 * 28 + $map_peak{$peak} * 28 + $map_final{$fin}; push @result, $ucs; }else{ s/^.//; push @result, unpack( "C", $& ); } } @result; } #### --------------------------------------------------------- #### #### Split($) #### #### --------------------------------------------------------- #### sub Split($){ local( $_ ) = @_; local( $temp, $ini, $peak, $fin, @result ); # tr/A-Z/a-z/; # this is not done, as capital letters are needed while( $_ ne "" ){ if( s/^\s*$exp_hangul//io ){ ( $ini, $peak, $fin ) = ( $1, $2, $3 ); if( $fin && /^($exp_peak)/io ){ $fin =~ s/($exp_initial)$//io; $_ = $&.$_; } $temp = sprintf( "%s-%s-%s", $ini, $peak, $fin ); $temp =~ s/^-//; $temp =~ s/-$//; push @result, $temp; }else{ s/^.//; push @result, $&; } } @result; } #### --------------------------------------------------------- #### #### import() #### #### --------------------------------------------------------- #### sub import($){ return if( $exp_hangul ); local( $i ); @r_initial = ( "r", "R", "s", "e", "E", "f", "a", "q", "Q", "t", "T", "d", "w", "W", "c", "z", "x", "v", "g" ); @r_peak = ( "k", "o", "i", "O", "j", "p", "u", "P", "h", "hk", "ho", "hl", "y", "n", "nj", "np", "nl", "b", "m", "ml", "l" ); @r_final = ( "", "r", "R", "rs", "s", "sw", "sg", "e", "f", "fr", "fa", "fq", "ft", "fx", "fv", "fg", "a", "q", "qt", "t", "T", "d", "w", "c", "z", "x", "v", "g" ); $exp_initial = join( "|", reverse sort @r_initial ); $exp_peak = join( "|", reverse sort @r_peak ); $exp_final = join( "|", reverse sort @r_final ); $exp_hangul = "($exp_initial)($exp_peak)($exp_final)"; $i = 0; %map_initial = map( ( $_, $i++ ), @r_initial ); $i = 0; %map_peak = map( ( $_, $i++ ), @r_peak ); $i = 0; %map_final = map( ( $_, $i++ ), @r_final ); } #### --------------------------------------------------------- #### ;$VERSION; # End Of The Script. __END__