--Boundary_(ID_2y+L2IzElmGKkqvFnkScKQ)
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT
Tzafrir Cohen wrote:
>bidi formatting characters.
>
>
>
Agree that bidi chars is the way it SHOULD be done, however in current
state of affairs, there's two problems with these:
1) There's no general way of typing them. Some apps might have them, but
it really should be done by an xkb keyboard layout (the standard hebrew
one does not include bidi stuff).
For that specific issue - I've prepared an xkb symbols file. It's
included in the attached bash-script, which acts as an
installer/uninstaller/activate/deactivate tool (just put it in
/usr/local/bin and your'e fine).
To access the new keys: *in hebrew mode only* press
SHIFT+F{1,2,3,4,5,6,7} (instructions are also printed by the installer.
Pls let me know of any comments or suggestions (esp: which keys you
think they should be on).
2) Applications don't always handle them right. For example, OpenOffice
handles them correctly, but makes them visible - depending on the font,
you usually see an annoying blank square in their place (they should be
invisible - at least if you call yourself WYSIWIG). gedit behaves quite
well with these chars - but there's some annoying issues concerning
cursor movement with arrow keys.
--Boundary_(ID_2y+L2IzElmGKkqvFnkScKQ)
Content-type: text/plain; name=bidisetup
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=bidisetup
#!/bin/bash
#
# Depends:
# XFree86 4.3.x or matching (for xkb & multi-layout support)
# bash (script's language)
# ssh (for the scp. Maybe we should use su instead somehow?)
# awk (for the installation thingy)
#
VERSION="0.5"
XSERVER="localhost"
CHKDIRS="/etc/X11/xkb/symbols /usr/X11R6/lib/X11/xkb/symbols
/usr/local/X11R6/lib/X11/xkb/symbols /usr/local/etc/X11/xkb/symbols"
TMPFILE="/tmp/xkbaddbidi_symbols_bidi"
BIDIFILENAME="bidi"
function frstdir {
for cdir in $*; do
if [ -d $cdir ]; then
echo $cdir
break
fi
done
}
function putbidifile {
cat >$1 <<-EOF
// \$XConsortium: \$
//
// \$XFree86: \$
//
EOF
if [ $? != 0 ]; then return 1; fi
echo "// This is BidiSymbols. Version: $VERSION" >>$1
cat >>$1 <<-EOF
//
// To use add +bidi:2 to symbols e.g.:
// setxkbmap -symbols \`setxkbmap -v | awk '/^symbols:/ {print \$2
"+bidi:2"}'\`
partial default function_keys xkb_symbols "bidi" {
name[Group1]= "bidi";
// Begin "Function" section
key <FK01> { type[Group1]="TWO_LEVEL",
symbols[Group1]=[ F1 , U202A ]}; //LRE
key <FK02> { type[Group1]="TWO_LEVEL",
symbols[Group1]=[ F2 , U202B ]}; //RLE
key <FK03> { type[Group1]="TWO_LEVEL",
symbols[Group1]=[ F3 , U202C ]}; //PDF
key <FK04> { type[Group1]="TWO_LEVEL",
symbols[Group1]=[ F4 , U202D ]}; //LRO
key <FK05> { type[Group1]="TWO_LEVEL",
symbols[Group1]=[ F5 , U202E ]}; //RLO
key <FK06> { type[Group1]="TWO_LEVEL",
symbols[Group1]=[ F6 , U200E ]}; //LRM
key <FK07> { type[Group1]="TWO_LEVEL",
symbols[Group1]=[ F7 , U200F ]}; //RLM
};
EOF
}
function get_bidi_version {
cat ${SYMBDIR}/${BIDIFILENAME} | awk '/This is BidiSymbols/ {print $NF}'
}
function install_bidifile {
putbidifile $TMPFILE
if [ $? != 0 ]; then return $?; fi
echo "Installing bidi file (version=${VERSION}) in ${SYMBDIR}/${BIDIFILENAME}"
echo "You'll need to supply root password"
scp $TMPFILE [EMAIL PROTECTED]:${SYMBDIR}/${BIDIFILENAME}
}
function uninstall_bidifile {
setxkbmap
echo "Uninstalling bidi file (version=${VERSION}) from ${SYMBDIR}/${BIDIFILENAME}"
echo "You'll need to supply root password"
ssh [EMAIL PROTECTED] rm ${SYMBDIR}/${BIDIFILENAME}
echo "bidi character keys support uninstalled"
}
function is_activated {
if ( xmodmap -pk | grep U202A >/dev/null ); then echo 1
else echo 0
fi
}
function activate_bidi {
setxkbmap -symbols `setxkbmap -v | awk '/^symbols:/ {print $2 "+bidi:2"}'`
if [ $? != 0 ]; then return 1; fi
echo "Unicode bidi keys were successfuly added"
echo "The new keys (work only in hebrew mode) are:"
echo " SHIFT+F1 : LRE"
echo " SHIFT+F2 : RLE"
echo " SHIFT+F3 : PDF"
echo " SHIFT+F4 : LRO"
echo " SHIFT+F5 : RLO"
echo " SHIFT+F6 : LRM"
echo " SHIFT+F7 : RLM"
}
function deactivate_bidi {
# check: does setxkbmap with no options set as specified in XF86Config?
setxkbmap
if [ $? != 0 ]; then return 1; fi
echo "bidi character keys deactivated"
}
echo "Bidi Character Support Setup (version $VERSION)"
echo "--------------------------------------------"
SYMBDIR=$(frstdir $CHKDIRS)
if [ "$SYMBDIR" = "" ]; then
echo could not find a valid xkb installation 1>&2
exit 1
fi
OPTS=""
if [ -f ${SYMBDIR}/${BIDIFILENAME} ]; then
if [[ $(get_bidi_version) < $VERSION ]]; then
echo ... Found older version $(get_bidi_version) in ${SYMBDIR}/${BIDIFILENAME}
OPTS="$OPTS Upgrade"
else
echo ... bidi charset file already installed : ${SYMBDIR}/${BIDIFILENAME}
if (( $(is_activated) )); then
OPTS="$OPTS Deactivate"
else
OPTS="$OPTS Activate"
fi
OPTS="$OPTS Uninstall"
fi
else
OPTS="$OPTS Install"
fi
#echo "<$OPTS>"
#for i in $OPTS; do echo "<${i}>"; done
NOPTS=$(echo $OPTS | wc -w)
# if single option - do it
if (( ${NOPTS} == 1 )); then
opt=$(echo $OPTS) #get rid of leading ws
case $opt in
Install|Upgrade)
if (( $(is_activated) )); then deactivate_bidi; fi
install_bidifile
if [ $? != 0 ]; then exit $?; fi
activate_bidi
if [ $? != 0 ]; then exit $?; fi
;;
*)
echo "Bug? Illegal option <$OPTS>" 2>&1
exit 1
;;
esac
#several possibilities - ask user
else
echo "select option (or press ^D to quit)"
select opt in $OPTS; do
case $opt in
Uninstall)
if (( $(is_activated) )); then deactivate_bidi; fi
uninstall_bidifile
if [ $? != 0 ]; then exit $?; fi
;;
Activate)
activate_bidi
if [ $? != 0 ]; then exit $?; fi
;;
Deactivate)
deactivate_bidi
if [ $? != 0 ]; then exit $?; fi
;;
*)
echo "Illegal option <$OPTS>" 2>&1
exit 1
;;
esac
exit 0
done
fi
--Boundary_(ID_2y+L2IzElmGKkqvFnkScKQ)--
=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]