unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Po Lu <luangruo@yahoo.com>
To: Ant <ar0x2ff@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: Android port of Emacs
Date: Fri, 07 Jul 2023 10:46:50 +0800	[thread overview]
Message-ID: <87a5w8igkl.fsf@yahoo.com> (raw)
In-Reply-To: <a1768721-e0a9-cd3a-ea07-044099534a82@gmail.com> (Ant's message of "Thu, 6 Jul 2023 17:48:01 +0200")

Ant <ar0x2ff@gmail.com> writes:

> * Po Lu:
>
>> I think I will look into providing modifier keys using the tool bar.
>
>
> Thank you for the addition. They for sure make Emacs for Android (or
> handheld devices in general) much more comfortable to use.
>
> The fact that having a modifier on temporarily overrides the text
> conversion style is very handy. I'd like to have modifiers on physical
> keys too, so I chose to re-use some of your functions:
>
> (define-key local-function-key-map (kbd "<volume-up>")
> #'tool-bar-event-apply-meta-modifier)
>
> (define-key local-function-key-map (kbd "<volume-down>")
> #'tool-bar-event-apply-control-modifier)
>
> And it works good, except when I want both modifiers on: pressing
> <volume-up> and then <volume-down> is recognized as M-<volume-down>. 
> The tool-bar-apply-modifiers function does address this issue and in
> fact it is possible to activate multiple modifiers through the new
> tool bar feature, but I'm unable to dig further and try to make it fit
> with physical keys.
>
> I just wanted to address this for everyone who wants to insert
> modifiers on Emacs for Android. And also, thank you again Po Lu for
> the addition.

The key to applying multiple modifier keys simultaneously is this part
of the function `modifier-bar-buttons':

          (let* ((modifiers init-modifier-list) event1
                 (overriding-text-conversion-style nil)
                 (event (read-event)))
            ;; Combine any more modifier key presses.
            (while (eq event 'tool-bar)
              (setq event1 (event-basic-type (read-event)))
              ;; Reject unknown tool bar events.
              (unless (memq event1 '(alt super hyper shift control meta))
                (user-error "Unknown tool-bar event %s" event1))
              ;; If `event' is the name of a modifier key, apply that
              ;; modifier key as well.
              (unless (memq event1 modifiers)
                (push event1 modifiers)
                ;; This list is used to check which tool bar buttons
                ;; need to be enabled.
                (push event1 modifier-bar-modifier-list))
              ;; Update the tool bar to disable the modifier button
              ;; that was read.
              (force-mode-line-update)
              (redisplay)
              ;; Read another event.
              (setq event (read-event)))

To allow applying multiple modifier keys, you must also check if the
basic type of the event read is either `volume-up' or `volume-down', and
push the appropriate modifier key to `modifiers' and
`modifier-bar-modifier-list' if that is so.  You might want to include
your own version of this function in your customizations, since it's not
exactly relevant to the modifier bar.

Thanks.



  reply	other threads:[~2023-07-07  2:46 UTC|newest]

Thread overview: 176+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-06 15:48 Android port of Emacs Ant
2023-07-07  2:46 ` Po Lu [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-07-02 14:53 Ant
2023-06-16 11:20 Eli Zaretskii
2023-06-16 13:03 ` Po Lu
2023-06-16 13:17   ` Po Lu
2023-06-16 15:16 ` Dr. Arne Babenhauserheide
2023-06-16 15:32   ` Eli Zaretskii
2023-06-16 16:34     ` Dr. Arne Babenhauserheide
2023-06-16 19:34       ` Bob Rogers
2023-06-16 23:46       ` Po Lu
2023-06-18  2:10       ` Richard Stallman
2023-06-17  0:49     ` Konstantin Kharlamov
2023-06-17  6:20       ` Eli Zaretskii
2023-06-17  9:28         ` Dr. Arne Babenhauserheide
2023-06-17 13:34         ` Konstantin Kharlamov
2023-06-17 16:47           ` Alfred M. Szmidt
2023-06-16 15:49 ` Thomas Fitzsimmons
2023-06-16 16:28   ` Eli Zaretskii
2023-06-16 23:45   ` Po Lu
2023-06-16 21:19 ` chad
2023-06-17  0:11   ` Po Lu
2023-06-17  6:18     ` Eli Zaretskii
2023-06-17  6:38       ` Po Lu
2023-06-17  6:47         ` Eli Zaretskii
2023-06-17  7:08           ` Po Lu
2023-06-17  7:27             ` Eli Zaretskii
2023-06-17  7:41               ` Po Lu
2023-06-17  8:47                 ` Eli Zaretskii
2023-06-17  9:36             ` Dr. Arne Babenhauserheide
2023-06-17  9:57               ` Po Lu
2023-06-18  7:33           ` Sean Whitton
2023-06-30 22:09       ` Stefan Monnier via Emacs development discussions.
2023-06-17  6:00   ` Eli Zaretskii
2023-06-17  6:57     ` Po Lu
2023-06-17  7:10       ` Po Lu
2023-06-17  7:21       ` Eli Zaretskii
2023-06-17  7:33         ` Po Lu
2023-06-17  7:54           ` Alfred M. Szmidt
2023-06-17  8:02             ` Po Lu
2023-06-17  8:43           ` Eli Zaretskii
2023-06-17 16:47             ` Alfred M. Szmidt
2023-06-18  0:36               ` Po Lu
2023-06-19  2:13               ` Richard Stallman
2023-06-19  7:51             ` Manuel Giraud via Emacs development discussions.
2023-06-19  8:22               ` Po Lu
2023-06-19 16:42                 ` Eli Zaretskii
2023-06-19 17:54               ` Eli Zaretskii
2023-06-18  1:10     ` Dmitry Gutov
2023-06-18  1:24       ` Po Lu
2023-06-18  2:07         ` Óscar Fuentes
2023-06-20 13:29           ` Po Lu
2023-06-22 22:49             ` Gregory Heytings
2023-06-23  0:22               ` Po Lu
2023-06-23  7:37                 ` Gregory Heytings
2023-06-23  8:52                   ` Po Lu
2023-06-26 15:18                     ` Gregory Heytings
2023-06-27  0:39                       ` Po Lu
2023-07-01 14:13                         ` Gregory Heytings
2023-06-24 12:17             ` Óscar Fuentes
2023-06-24 13:01               ` Po Lu
2023-06-24 13:57                 ` Óscar Fuentes
2023-06-25  0:07                   ` Po Lu
2023-06-25  2:02                     ` Óscar Fuentes
2023-06-25  4:04                       ` Po Lu
2023-07-01 19:02                         ` Spencer Baugh
2023-07-02  5:09                           ` Po Lu
2023-07-02 12:50                             ` Dmitry Gutov
2023-07-02 12:59                               ` Po Lu
2023-07-02 13:15                                 ` Eli Zaretskii
2023-07-13 13:54                                   ` Gregory Heytings
2023-07-13 23:56                                     ` Po Lu
2023-07-02 13:16                                 ` Dmitry Gutov
2023-07-02 15:45                                   ` Spencer Baugh
2023-07-02 16:29                                     ` Dmitry Gutov
2023-07-02 17:28                                       ` Dmitry Gutov
2023-07-02 18:48                                       ` Spencer Baugh
2023-07-02 23:53                                     ` Po Lu
2023-07-02 23:51                                   ` Po Lu
2023-07-04 12:34                               ` Jean Louis
2023-07-04 15:46                                 ` Dmitry Gutov
2023-07-05  0:18                                   ` Jean Louis
2023-07-11 20:53                                   ` Bryce
2023-07-02  9:31                         ` Arsen Arsenović
2023-07-02 11:29                           ` Po Lu
2023-07-02 14:52                             ` Dr. Arne Babenhauserheide
2023-07-02 15:26                             ` Arsen Arsenović
2023-07-03  0:03                               ` Po Lu
2023-07-04 18:59                                 ` Arsen Arsenović
2023-06-25  4:45                       ` Takesi Ayanokoji
2023-06-25  5:56                         ` Po Lu
2023-06-25 10:07                           ` Takesi Ayanokoji
2023-06-25 10:21                             ` Po Lu
2023-06-25 11:35                               ` Eli Zaretskii
2023-06-26  6:11                               ` Takesi Ayanokoji
2023-06-18  2:46         ` Dmitry Gutov
2023-06-18  3:05           ` Po Lu
2023-06-18 22:35             ` Dmitry Gutov
2023-06-19  0:39               ` Po Lu
2023-06-19 12:04                 ` Dmitry Gutov
2023-06-18  5:31       ` Eli Zaretskii
2023-06-18  5:48         ` Po Lu
2023-06-18  7:33           ` Eli Zaretskii
2023-06-18 22:26         ` Dmitry Gutov
2023-06-21  0:50       ` Richard Stallman
2023-06-21 11:32         ` Eli Zaretskii
2023-06-23  1:47           ` Richard Stallman
2023-06-23  7:04             ` Eli Zaretskii
2023-06-23  9:05               ` Po Lu
2023-06-23 10:23                 ` Eli Zaretskii
2023-06-23 11:38                   ` Po Lu
2023-06-23 12:08                     ` Eli Zaretskii
2023-06-24  1:19                       ` Po Lu
2023-06-24  6:54                         ` Eli Zaretskii
2023-06-24 15:19                           ` Robert Pluim
2023-06-24 18:56                           ` Alan Mackenzie
2023-06-25  0:12                             ` Po Lu
2023-06-29 20:34                           ` Filipp Gunbin
2023-06-30  0:35                             ` Po Lu
2023-06-30  3:21                             ` Takesi Ayanokoji
2023-06-30  4:54                             ` Jean Louis
2023-06-24  1:39                       ` Dmitry Gutov
2023-06-24  7:06                         ` Eli Zaretskii
2023-06-24 22:23                           ` Dmitry Gutov
2023-06-25  0:10                             ` Po Lu
2023-06-25  2:26                               ` Dmitry Gutov
2023-06-25  4:15                                 ` Po Lu
2023-06-25  5:10                             ` Jean Louis
2023-06-25  5:57                               ` Po Lu
2023-06-30  4:57                                 ` Jean Louis
2023-06-30  5:12                                   ` Po Lu
2023-07-04 12:27                                     ` Jean Louis
2023-06-26  2:12                       ` Richard Stallman
2023-06-23 12:33               ` Dr. Arne Babenhauserheide
2023-06-24  7:30               ` Sean Whitton
2023-06-25  2:25               ` Richard Stallman
2023-06-25  2:40                 ` Po Lu
2023-06-27  1:07                   ` Richard Stallman
2023-06-25  5:38                 ` Eli Zaretskii
2023-06-27  1:07                   ` Richard Stallman
2023-06-17 23:16 ` Gregory Heytings
2023-06-18  0:42   ` Po Lu
2023-06-18  6:20     ` Gregory Heytings
2023-06-18  6:56       ` Po Lu
2023-06-18 22:53         ` Gregory Heytings
2023-06-19  0:34           ` Po Lu
2023-06-19 14:27             ` Gregory Heytings
2023-06-21  0:52               ` Richard Stallman
2023-06-21  9:20                 ` Gregory Heytings
     [not found]                   ` <87r0q53vi7.fsf@dick>
2023-06-23  1:47                     ` Richard Stallman
2023-06-19 16:19             ` Eli Zaretskii
2023-06-20  1:13               ` Po Lu
2023-06-20  5:57                 ` chad
2023-06-20 11:25                 ` Eli Zaretskii
2023-06-21  9:19                 ` Gregory Heytings
2023-06-18  0:57   ` Po Lu
2023-06-30 21:53   ` Stefan Monnier via Emacs development discussions.
2023-07-01 14:13     ` Gregory Heytings
2023-07-01 14:35       ` Stefan Monnier
2023-07-01 15:09         ` Gregory Heytings
2023-07-02 15:43           ` Stefan Monnier
2023-07-13 13:55             ` Gregory Heytings
2023-07-13 16:53               ` Stefan Monnier
2023-07-13 23:55                 ` Po Lu
2023-07-17  1:50                 ` Po Lu
2023-08-10 11:28                 ` Gregory Heytings
2023-08-10 12:50                   ` Po Lu
2023-08-10 13:26                   ` Eric S Fraga
2023-08-10 13:45                     ` Eli Zaretskii
2023-08-10 13:33                   ` Stefan Monnier
2023-07-02  9:00       ` Dr. Arne Babenhauserheide
2023-06-18 20:39 ` Thanos Apollo
2023-06-19 16:08   ` Eli Zaretskii
2023-06-30 21:44   ` Stefan Monnier via Emacs development discussions.
2023-06-25 23:37 ` Björn Bidar
2023-06-30 21:40 ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87a5w8igkl.fsf@yahoo.com \
    --to=luangruo@yahoo.com \
    --cc=ar0x2ff@gmail.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).