[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#276752: Urgent patch for kbd-chooser



* Recai Oktas [2004-10-18 16:28:38+0300]
> * Denis Barbier [2004-10-18 14:53:31+0200]
> > Selon Recai Oktas <roktas@omu.edu.tr>:
> > > > About #276548, the only short-term solution is indeed to "transcode"
> > > > symbols.  This is ugly, but AFAICT it always worked this way in Debian,
> > > > and is anyway not related to "my" changes.  I will give longer
> > > > explanations later in this bugreport.
> > > > In conclusion, your patch against kbd-chooser/prebaseconfig looks right
> > > > to me.  I am unable to access SVN repository, is Turkish the only broken
> > > > language?  This problem might occur for all languages which use
> > > > console-tools and have an encoding different from ISO-8859-1 and UTF-8.
> > >
> > > Yep, Turkish seems to be the only language.
> 
> I mean Turkish seems to be the only language against which such a bug
> has been reported so far.
> 
> > If Hebrew does not use UTF-8 encoding, it is affected as well, isn't it?
> 
> Yes, Hebrew uses "iso-8859-8".  And some others:
> 
>     Lithuanian (lt.kmap): iso-8859-4
>     Latvian (lv-latin4.kmap): iso-8859-4
> 
> I am going to test these languages tonight, and inform you.

Unfortunately, this bug is more dangerous than it seems.  I've tested
the languages below and they all failed:

* Hebrew
  Keymap: hebrew.kmap
  Charset (_in keymap_, not in languagelist): iso-8859-8
  Result: Gave the warning 'unknown keysym "doubleunderscore"'
          Totally refused to load keymap at boot!

* Lithuanian
  Keymap: lt.kmap
  Charset: iso-8859-4
  Result: Same as Turkish (keymap loaded, but will not be functioning
          properly)

* Latvian
  Keymap: lv-latin4.kmap
  Charset: iso-8859-4
  Result: Same as Turkish

I've retested these languages by applying the following one line patch:
(/usr/lib/prebaseconfig.d/70kbd-chooser)

     db_get debian-installer/serial-console
     if [ "$RET" = "false" ] ; then
	    apt-install console-tools console-data console-common 
    -	chroot /target install-keymap $KEYMAP
    +	kbd-mode -a; chroot /target install-keymap $KEYMAP; kbd-mode -u
     fi

and the problem was resolved.  According to these facts, let me
summarize the whole picture:

* We had applied a critical patch to resolve the bugs: #251550, #251231,
  #252109 (keyboard freezes for high ascii characters).  From that time,
  keyboard has been used in Unicode mode in d-i.

* But as stated in #276752, switching to unicode mode produces a
  side-effect for all languages which use console-tools and have a
  charset declared in keymap different from iso-8859-1, iso-8859-15 and
  utf-8.  Note that most of the cyrillic languages (using the
  console-cyrillic) and asian languages (using jfbterm) does not suffer
  from the problem.  In fact, only a few languages that I know of:
  Turkish, Hebrew, Lithuanian and Latvian are directly affected.

* Switching temporarily to ascii mode before invoking 'install-keymap'
  (and then reswitching to the unicode mode) seems to be the most simple
  solution, till we find a fix for #276548.  As I said before, I've
  succesfully tested this workaround for the affected languages.

* Instead of fixing the problem for affected languages only, I suggest
  to use brute-force which means to always switch to ascii mode before
  keymap installation, hence my patch.

* The workaround I proposed should not affect the languages using
  iso-8859-1/15 and utf-8, because this workaround means to return
  temporarily back to the old behaviour (the one before applying the
  patch to fix the keyboard freezes).  Nevertheless we should perform a
  test.  Hence I CC'ed this mail to Christian (iso-8859-1/15) and
  Konstantinos (utf-8).  Could you check the French and Greek keyboards
  _after the installation_ by first applying the patch attached to the
  /usr/lib/prebaseconfig.d/70kbd-chooser in d-i phase?
 
Regards,

-- 
roktas
diff -ru kbd-chooser.orig/debian/prebaseconfig kbd-chooser/debian/prebaseconfig
--- kbd-chooser.orig/debian/prebaseconfig	2004-04-19 05:13:49.000000000 +0300
+++ kbd-chooser/debian/prebaseconfig	2004-10-18 19:36:11.000000000 +0300
@@ -23,7 +23,7 @@
 db_get debian-installer/serial-console
 if [ "$RET" = "false" ] ; then
 	apt-install console-tools console-data console-common 
-	chroot /target install-keymap $KEYMAP
+	kbd-mode -a; chroot /target install-keymap $KEYMAP; kbd-mode -u
 fi
 
 

Attachment: signature.asc
Description: Digital signature


Reply to: