From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Amit Ramon Newsgroups: gmane.emacs.devel Subject: Re: Issues with quail.el Date: Thu, 10 May 2018 17:12:34 +0300 Message-ID: <20180510141234.tpj4vagod6bejmta@isis.luna> References: <20180505115357.daekqzkpg3565ztj@isis.luna> <878t8tcy8o.fsf@md5i.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1525961448 16366 195.159.176.226 (10 May 2018 14:10:48 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 10 May 2018 14:10:48 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu May 10 16:10:44 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fGmHM-0004AY-GH for ged-emacs-devel@m.gmane.org; Thu, 10 May 2018 16:10:44 +0200 Original-Received: from localhost ([::1]:34156 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGmJT-00051r-Lo for ged-emacs-devel@m.gmane.org; Thu, 10 May 2018 10:12:55 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56564) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGmJJ-00050E-6u for emacs-devel@gnu.org; Thu, 10 May 2018 10:12:47 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGmJE-00051Q-HN for emacs-devel@gnu.org; Thu, 10 May 2018 10:12:45 -0400 Original-Received: from mx1.riseup.net ([198.252.153.129]:52281) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fGmJE-00050u-3Q for emacs-devel@gnu.org; Thu, 10 May 2018 10:12:40 -0400 Original-Received: from piha.riseup.net (piha-pn.riseup.net [10.0.1.163]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client CN "*.riseup.net", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.riseup.net (Postfix) with ESMTPS id DC4141A0685 for ; Thu, 10 May 2018 07:12:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1525961559; bh=J0jK9a8c99PTD4Lv5okZ5SSM4ENTVxQg551lUwJkaWA=; h=Date:From:To:Subject:References:In-Reply-To:From; b=nSEfROvMsvOYAPvdJv6pHC2VoP960KOyOFr4nOQFqL5wejKYOFSMFmJxPaJO3eqNb idKsHzvGbSMVZyhBWpa3CK4e6jaA739FBDGOsV6XhEhCn4pJ+f2e/EWhqVqboeZqUf KTEcNNnzR3kcTDRyvhEOMv2g/4CKguwC3TwhI7Cc= X-Riseup-User-ID: E1098D440159E14ACDD341ECFE0C29E97F08479D5031654F8E5DA9A9F5A043C6 Original-Received: from [127.0.0.1] (localhost [127.0.0.1]) by piha.riseup.net with ESMTPSA id 4C985234C9 for ; Thu, 10 May 2018 07:12:38 -0700 (PDT) Mail-Followup-To: emacs-devel@gnu.org Content-Disposition: inline In-Reply-To: <878t8tcy8o.fsf@md5i.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 198.252.153.129 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:225202 Archived-At: Michael Welsh Duggan [2018-05-08 23:19 -0400]: >I'm not a quail expert, but I looked through a lot of the code recently >to try to figure out how to do something else, so maybe I can figure out >how to help here. Thanks, any help is appreciated. > >> First issue >> >> Assume that the keyboard layout is set to "atari-german" and that the >> input method is "Hebrew". When I type C-h I (thus invoking >> "describe-input-method"), the drawing of the keyboard layout is >> incorrect. The keys that appear in the shifted level, which should be, >> in this input method, similar to those in the standard layout, are >> actually taken from the current keyboard layout. > >Okay, let's verify some things. When I type >`M-x quail-show-keyboard-layout RET atari-german RET', I get the >following: > >Keyboard layout (keyboard type: atari-german) > > +----------------------------------------------------------------+ > | 1! | 2" | 3=C2=A7 | 4$ | 5% | 6& | 7/ | 8( | 9) | 0=3D | =C3=9F? = | '` | #^ | > +----------------------------------------------------------------+ > | qQ | wW | eE | rR | tT | zZ | uU | iI | oO | pP | =C3=BC=C3=9C = | +* | > +------------------------------------------------------------+ > | aA | sS | dD | fF | gG | hH | jJ | kK | lL | =C3=B6=C3=96 | =C3= =A4=C3=84 | ~| | > +--------------------------------------------------------------+ > | <> | yY | xX | cC | vV | bB | nN | mM | ,; | .: | -_ | > +------------------------------------------------------+ > +-----------------------------+ > | space bar | > +-----------------------------+ > > >Is this what you get as well? Yes. >Does this match your actual keyboard? No, but my actual keyboard isn't atari-german -- I gave it just as an example. My physical keyboard is standard English QWERTY keyboard. On my Linux system I setup a Dvorak layout. I made tests mostly with my Dvorak setup[1] (there are footnotes at the end), but because Dvorak keyboard layout is not one of Emacs' defined layouts I used atari-german for the example. >> For example, the Hebrew letter TET is on the (standard) y key, and >> pressing this key together with shift when Hebrew input method is >> active should produce Y. This works fine when typing, but in the map >> drawn by "describe-input-method" the letter that appears on this key >> in the shifted state is Z, which is what this key does in >> "atari-german" layout. There are some other keys not in the right >> place - all those that in "atari-german" have a meaning that is >> different than the one in the standard layout. > >Also to verify, the 'y' key is the one to diagonally down and to the >right of the 'a' key? Like in the layout above? Yes. > When I try to recreate what you are showing, I get the following. > Does this match? > > +----------------------------------------------------------------+ > | 1! | 2" | 3=C2=A7 | 4$ | 5% | 6& | 7/ | 8( | 9) | 0( | =C3=9F? | = '` | ;^ | > +----------------------------------------------------------------+ > | qQ | 'W | =D7=A7=E2=80=8EE | =D7=A8=E2=80=8ER | =D7=90=E2=80=8E= T | =D7=98=E2=80=8EZ | =D7=95=E2=80=8EU | =D7=9F=E2=80=8EI | =D7=9D=E2=80= =8EO | =D7=A4=E2=80=8EP | ]} | [{ | > +------------------------------------------------------------+ > | =D7=A9=E2=80=8EA | =D7=93=E2=80=8ES | =D7=92=E2=80=8ED | =D7=9B= =E2=80=8EF | =D7=A2=E2=80=8EG | =D7=99=E2=80=8EH | =D7=97=E2=80=8EJ | =D7= =9C=E2=80=8EK | =D7=9A=E2=80=8EL | =D7=A3=E2=80=8E=C3=96 | ,=C3=84 | ~| | > +--------------------------------------------------------------+ > | >< | =D7=96=E2=80=8EY | =D7=A1=E2=80=8EX | =D7=91=E2=80=8EC | =D7= =94=E2=80=8EV | =D7=A0=E2=80=8EB | =D7=9E=E2=80=8EN | =D7=A6=E2=80=8EM | = =D7=AA=E2=80=8E> | =D7=A5=E2=80=8E< | ._ | > +------------------------------------------------------+ > +-----------------------------+ > | space bar | > +-----------------------------+ > Yes. >Finally, if it does match, what should it look like instead? This is what it should look like: +----------------------------------------------------------------+ | 1! | 2@ | 3# | 4$ | 5% | 6^ | 7& | 8* | 9) | 0( | -_ | =3D+ | `~ | +----------------------------------------------------------------+ | /Q | 'W | =D7=A7=E2=80=8EE | =D7=A8=E2=80=8ER | =D7=90=E2=80=8ET= | =D7=98=E2=80=8EY | =D7=95=E2=80=8EU | =D7=9F=E2=80=8EI | =D7=9D=E2=80=8E= O | =D7=A4=E2=80=8EP | ]} | [{ | +------------------------------------------------------------+ | =D7=A9=E2=80=8EA | =D7=93=E2=80=8ES | =D7=92=E2=80=8ED | =D7=9B= =E2=80=8EF | =D7=A2=E2=80=8EG | =D7=99=E2=80=8EH | =D7=97=E2=80=8EJ | =D7= =9C=E2=80=8EK | =D7=9A=E2=80=8EL | =D7=A3=E2=80=8E: | ," | \| | +-----------------------------------------------------------+ | =D7=96=E2=80=8EZ | =D7=A1=E2=80=8EX | =D7=91=E2=80=8EC | =D7=94= =E2=80=8EV | =D7=A0=E2=80=8EB | =D7=9E=E2=80=8EN | =D7=A6=E2=80=8EM | =D7= =AA=E2=80=8E> | =D7=A5=E2=80=8E< | .? | +-------------------------------------------------+ +-----------------------------+ | space bar | +-----------------------------+ Most of the differences are in the first shift level. Note, for example, the location of the "Y" and "Z", and the two keys right of the "L". This layout is the standard for a Hebrew keyboard layout (the Israeli standard, at least), and this is what a Hebrew writer would expect when Hebrew input method is set. (you can get it simply if you don't change your keyboard layout -- assuming it is the standard one -- and then set input method to Hebrew, and do C-h I.) The point is that *there are no problems with actual typing* -- you press Shift with the key that has the "Z" in your drawing (to remove any possible confusion, this is the key that is right below 6 and 7 and on the center between them), and you'll get "Y". The problem is only with the drawing created by C-h I -- I believe the algorithm for creating this drawing is wrong, but it could also be a problem of the way the Hebrew input method is defined[2] or maybe both. >> Second issue > >[...] > >Snipped until I have a clearer idea what the problem is. Fair enough. Here is how to reproduce it. I assume that your real keyboard is standard and that you're using the standard keyboard layout (this is the default of Emacs). 1. Open a new buffer and set the input method to Hebrew (M-x set-input-method). 2. Press the keys t, y, u (as on the standard keyboard, t is under 5 and 6, and then the two following keys). This will type the Hebrew letters =D7=90=D7=98=D7=95 (this is ALEF TEV VAV). 3. Place the pointer on the first letter, and do: M-x quail-show-key You should get: To input '=D7=90', type "t" 4. Now place the pointer on the second letter and do the same. You should get: To input '=D7=98', type "y" 5. For the third letter, you should get: To input '=D7=95', type "u" 6. Now switch to atari-german keyboard layout and perform the same steps. For the first and third letters you should get the same as above. What I get for the second letter (TET, =D7=98) is: =D7=98 can't be input by the current input method Now, to prove that this message is incorrect, press the z on your keyboard (physical z). This is kind of cheating, but because y and z are swapped in atari-german, pressing z is like really giving Emacs y, and vice versa. So try pressing either keys, y and z, and you'll see that you can input TET. I hope this helps to understand the problems. Best, --- Amit [1] I set my Linux X window system to Dvorak layout with the following shell command: $ setxkbmap -rules evdev -model pc104 -layout "us" -variant "dvorak" So from Emacs' point of view the keyboard is really Dvorak. Note that if the real keyboard layout is not the standard one, you should call "quail-set-keyboard-layout" to set it for Emacs. However, for a reason I don't understand Emacs doesn't have a definition for Dvorak layout[*] so you have to use a hommade one. You can do that by evaluating the following elisp code: (require 'quail) (add-to-list 'quail-keyboard-layout-alist `("dvorak" . ,(concat " " " 1!2@3#4$5%6^7&8*9(0)[{]}`~ " " '\",<.>pPyYfFgGcCrRlL/?=3D+ " " aAoOeEuUiIdDhHtTnNsS-_\\| " " ;:qQjJkKxXbBmMwWvVzZ " " "))) (quail-set-keyboard-layout "dvorak") If you actually evaluate this elisp code, you could call "quail-set-keyboard-layout" once with "dvorak" and once with "standard" and compare the results of C-h I (and for that you don't have to change the actual layout of the keyboard). * Emacs has (see quail.el) definitions for sun-type3, atari-german, pc102-de, jp106 and pc105-uk keyboard layouts only, but not Dvorak (anyone has an idea why? perhaps it is time to add it?) [2] The definitions for the standard Hebrew input method ("hebrew" and "hebrew-new") do not explicitly define the first shift level. Perhap the author of it trusted quail to take this from the English standard layout (the first shift level is identical, at least most of it). However, perhaps it would be safer to completly define the Hebrew layout, including the first shift level.