Skip to content

Instantly share code, notes, and snippets.

@eiiches
Created November 17, 2011 16:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eiiches/1373569 to your computer and use it in GitHub Desktop.
Save eiiches/1373569 to your computer and use it in GitHub Desktop.
Morse on numlock LED. To run, echo "モールス信号" | ./morse.sh
#!/bin/zsh
int_short=0.1
int_long=$(($int_short * 3))
int_between_char=$(($int_short * 3))
int_between_word=$(($int_short * 7))
ledon() {
setleds +num +caps +scroll < /dev/tty7
}
ledoff() {
setleds -num -caps -scroll < /dev/tty7
}
morsify_char_base() {
m=
case $1 in
ア) m=--.--;;
カ) m=.-.. ;;
サ) m=-.-.-;;
イ) m=.- ;;
キ) m=-.-..;;
シ) m=--.-.;;
ウ) m=..- ;;
ク) m=...- ;;
ス) m=---.-;;
エ) m=-.---;;
ケ) m=-.-- ;;
セ) m=.---.;;
オ) m=.-...;;
コ) m=---- ;;
ソ) m=---. ;;
タ) m=-. ;;
ナ) m=.-. ;;
ハ) m=-... ;;
チ) m=..-. ;;
ニ) m=-.-. ;;
ヒ) m=--..-;;
ツ) m=.--. ;;
ヌ) m=.... ;;
フ) m=--.. ;;
テ) m=.-.--;;
ネ) m=--.- ;;
ヘ) m=. ;;
ト) m=..-..;;
ノ) m=..-- ;;
ホ) m=-.. ;;
マ) m=-..- ;;
ヤ) m=.-- ;;
ラ) m=... ;;
ミ) m=..-.-;;
ユ) m=-..--;;
リ) m=--. ;;
ム) m=- ;;
ヨ) m=-- ;;
ル) m=-.--.;;
メ) m=-...-;;
レ) m=--- ;;
モ) m=-..-.;;
ロ) m=.-.- ;;
ワ) m=-.- ;;
ヲ) m=.--- ;;
ン) m=.-.-.;;
゛) m=.. ;;
。) m=.-.-.- ;;
、) m=--..-- ;;
…) m= ;;
*) echo "cannot convert $1" > /dev/stderr ;;
esac
echo -n $m
}
ddd=ガギグゲゴダヂヅデド
ttt=カキクケコタチツテト
morsify_char() {
if [ -n "$(echo $1 | grep "[$ddd]")" ]; then
morsify_char_base $(echo $1 | sed "y/$ddd/$ttt/")
morsify_char_base "゛"
else
morsify_char_base $1
fi
}
morseled_char() {
for index i in $(echo $1 | sed s'/./\0\n/g' | grep -v "^$" | cat -n); do
[ $index -ne 1 ] && sleep $int_short
ledon
case $i in
.) sleep $int_short ;;
-) sleep $int_long ;;
esac
ledoff
done
}
morseled() {
cat -n | while read wordindex word; do
[ $wordindex -ne 1 ] && sleep $int_between_word
for charindex char in $(echo $word | sed 's/ /\n/g' | grep -v "^$" | cat -n); do
[ $charindex -ne 1 ] && sleep $int_between_char
morseled_char $char
done
done
}
morsify() {
cat -n | while read wordindex word; do
[ $wordindex -ne 1 ] && echo
for charindex char in $(echo $word | sed 's/./\0\n/g' | grep -v "^$" | cat -n); do
[ $charindex -ne 1 ] && echo -n " "
morsify_char $char
done
done
echo $result
}
mecab -Owakati | mecab -Oyomi | sed 's/ /\n/g' | morsify | morseled
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment