Turns out that is standardized:
https://docs.oracle.com/javase/8/docs/api/constant-values.html#javax.swing.text.DefaultEditorKit.cutAction

From: Jeremy Wood <micklen...@gmail.com>
Sent: Friday, March 8, 2024 6:40 PM
To: Yagnatinsky, Mark : Markets Pre Trade <mark.yagnatin...@barclays.com>; 
alexey.iva...@oracle.com; client-libs-dev@openjdk.org
Subject: Re[2]: how to get find out the keyboard shortcut for the paste action?


CAUTION: This email originated from outside our organisation - 
micklen...@gmail.com<mailto:micklen...@gmail.com> Do not click on links, open 
attachments, or respond unless you recognize the sender and can validate the 
content is safe.
Alexey,

> Does the input map of JTextArea contain shortcuts for Cut, Copy and Paste?

When I call (on my Mac, using openJDK 17)

UIManager.getDefaults().get("TextArea.focusInputMap”)
… I get an InputMap with: “copy-to-clipboard”, “cut-to-clipboard”, and 
“paste-from-clipboard”.

The code I tested against is:

InputMap inputMap = (InputMap) 
UIManager.getDefaults().get("TextArea.focusInputMap");
Map<Object, Collection<KeyStroke>> map = new TreeMap<>();
for (KeyStroke keyStroke : inputMap.keys()) {
    Object key = inputMap.get(keyStroke);
    Collection value = map.get(key);
    if (value == null) {
        value = new HashSet();
        map.put(key, value);
    }
    value.add(keyStroke);
}
for (Map.Entry<Object, Collection<KeyStroke>> e : map.entrySet()) {
    System.out.println(e);
}

Previous tests showed the same naming convention on Windows for JTextFields; I 
don’t know how standardized that naming convention is across all platforms / 
L&F’s.

 - Jeremy


------ Original Message ------
From mark.yagnatin...@barclays.com<mailto:mark.yagnatin...@barclays.com>
To alexey.iva...@oracle.com<mailto:alexey.iva...@oracle.com>; 
micklen...@gmail.com<mailto:micklen...@gmail.com>; 
client-libs-dev@openjdk.org<mailto:client-libs-dev@openjdk.org>
Date 3/5/24, 11:48:48 AM
Subject RE: how to get find out the keyboard shortcut for the paste action?

Thanks, this was educational. I never even thought about how localization might 
affect all this.

-----Original Message-----
From: Aleksei Ivanov <alexey.iva...@oracle.com<mailto:alexey.iva...@oracle.com>>
Sent: Tuesday, March 5, 2024 10:41 AM
To: Yagnatinsky, Mark : Markets Pre Trade 
<mark.yagnatin...@barclays.com<mailto:mark.yagnatin...@barclays.com>>; 
micklen...@gmail.com<mailto:micklen...@gmail.com>; 
client-libs-dev@openjdk.org<mailto:client-libs-dev@openjdk.org>
Subject: Re: how to get find out the keyboard shortcut for the paste action?


CAUTION: This email originated from outside our organisation - 
alexey.iva...@oracle.com<mailto:alexey.iva...@oracle.com> Do not click on 
links, open attachments, or respond unless you recognize the sender and can 
validate the content is safe.
Hello Mark,

As far as I know, the shortcuts are localisable. For example, you use
Ctrl+S to save a file in an English version, yet users of Spanish
version of Windows use Ctrl+G (for Guardar) instead.

At the same time, the most common actions — Cut, Copy and Paste as well as Undo 
and Redo — usually have the same shortcuts across all languages and OS, 
although macOS uses Cmd instead of Ctrl. However, the shortcut for Redo is not 
as standard, Ctrl+Shift+Z and Ctrl+Y are used, both could be mapped at the same 
time.

I wonder what is the shortcut for Undo in German versions since German keyboard 
layout has Z and Y keys swapped. Does anyone know?

So, the shortcuts used in an application are controlled by the application and 
the shortcuts can be localised.

For this reason, the shortcuts are usually “hardcoded”.


@Jeremy
Does the input map of JTextArea contain shortcuts for Cut, Copy and Paste?

On 2024-03-04 20:42, 
mark.yagnatin...@barclays.com<mailto:mark.yagnatin...@barclays.com> wrote:

Thanks!  I don’t have a particularly deep motivation here, other than
curiosity.

If you’re wondering how my curiosity got piqued initially, it was
something like this:

A while ago, someone at work was adding copy/paste support to some
component that didn’t have it.

I noticed that they “hardcoded” the shortcut “ctrl C”.

And I thought to myself:

Swing already “knows” that this is the right keyboard shortcut, in the
sense that all components that support copy/paste “out of the box” use it.

It would be nice if there was some way to ASK it to tell me what it
“knows”.

*From:* Jeremy Wood <micklen...@gmail.com<mailto:micklen...@gmail.com>>
*Sent:* Sunday, March 3, 2024 11:30 PM
*To:* Yagnatinsky, Mark : Markets Pre Trade
<mark.yagnatin...@barclays.com<mailto:mark.yagnatin...@barclays.com>>; 
client-libs-dev@openjdk.org<mailto:client-libs-dev@openjdk.org>
*Subject:* Re[2]: how to get find out the keyboard shortcut for the
paste action?

CAUTION: This email originated from outside our organisation -
micklen...@gmail.com<mailto:micklen...@gmail.com> Do not click on links, open 
attachments, or
respond unless you recognize the sender and can validate the content
is safe.

> But now I have a new question…

> Is there any way to get the “usual” letter for a “common” operation?

Hmm. Good question. Not that I know of.

> Again, one could create a scratch text area and grovel through its
input map, but that seems hacky.

I agree sifting through the L&F seems hacky.

I don’t think I understand exactly what you’re trying to implement
here. If you give me a more concrete example: maybe I (or someone on
this list) can offer a more concrete suggestion?

I’ll add some context in case this speaks to your question.

By default Swing gets this information in places like
BasicTextUI#getInputMap(), which calls:

InputMap shared=     (InputMap)DefaultLookup./get/(editor, this,
getPropertyPrefix() + ".focusInputMap”);

The following works on my Mac & Windows machine (I think using JDK
19), but I wouldn’t be surprised if it fails in other platforms /
L&F’s. It feels brittle, but it might (?) have potential:

private KeyStroke getCopyKeyStroke() {

InputMap inputMap = (InputMap)
UIManager.getDefaults().get("TextField.focusInputMap"); for (KeyStroke
keyStroke : inputMap.keys()) { Object action =
inputMap.get(keyStroke); if ("copy-to-clipboard".equals(action)) {
return keyStroke;         }     } /// this will show all the default
keystrokes // System.out.println(Arrays.asList(inputMap.allKeys()));
/return null; }

Regards,

 - Jeremy

------ Original Message ------

From mark.yagnatin...@barclays.com<mailto:mark.yagnatin...@barclays.com>

To micklen...@gmail.com<mailto:micklen...@gmail.com>; 
client-libs-dev@openjdk.org<mailto:client-libs-dev@openjdk.org>

Date 3/3/24, 6:00:46 PM

Subject RE: how to get find out the keyboard shortcut for the paste
action?

Thanks for the response!  I didn’t expect to get one at this point
J

It does indeed answer my question!

(Though you didn’t quite get the name right: there’s no Ex at the
end…

I take it you’ve done some Windows programming at some point)

But now I have a new question…

Is there any way to get the “usual” letter for a “common” operation?

For instance, lots of programs support copy and paste.

Is there a way to ask Java “what is the standard letter for paste”
and get back “V”?

Again, one could create a scratch text area and grovel through its
input map, but that seems hacky.

--
Regards,
Alexey

This message is for information purposes only. It is not a recommendation, 
advice, offer or solicitation to buy or sell a product or service, nor an 
official confirmation of any transaction. It is directed at persons who are 
professionals and is intended for the recipient(s) only. It is not directed at 
retail customers. This message is subject to the terms at: 
https://www.ib.barclays/disclosures/web-and-email-disclaimer.html<https://clicktime.symantec.com/15t5z4nzQ9mVyiYmXLJWp?h=rugiybCsNVrtvlgv0oiWK531TT-aEC8cdJoNgo0eicA=&u=https://www.ib.barclays/disclosures/web-and-email-disclaimer.html>.

For important disclosures, please see: 
https://www.ib.barclays/disclosures/sales-and-trading-disclaimer.html<https://clicktime.symantec.com/15t5uEbhwY5uZmiqymuNC?h=UUYilPcbuojDIsLAzJWyu0nJlLCHoCyghR5_RMssH0o=&u=https://www.ib.barclays/disclosures/sales-and-trading-disclaimer.html>
 regarding marketing commentary from Barclays Sales and/or Trading desks, who 
are active market participants; 
https://www.ib.barclays/disclosures/barclays-global-markets-disclosures.html<https://clicktime.symantec.com/15t5ek1rZh38KwF5M6hvL?h=ZDyeQZN-V_95O-lzOTIVWhfaptDBYTvgrAhbCC9UfZU=&u=https://www.ib.barclays/disclosures/barclays-global-markets-disclosures.html>
 regarding our standard terms for Barclays Investment Bank where we trade with 
you in principal-to-principal wholesale markets transactions; and in respect to 
Barclays Research, including disclosures relating to specific issuers, see: 
http://publicresearch.barclays.com<https://clicktime.symantec.com/15t5Zupa75MXuzR9oYJmi?h=7tVYpwZrUz-9ooO1JlNnWU655b7rnLE_E-tzFWQJPF0=&u=http://publicresearch.barclays.com>.
__________________________________________________________________________________
If you are incorporated or operating in Australia, read these important 
disclosures: 
https://www.ib.barclays/disclosures/important-disclosures-asia-pacific.html<https://clicktime.symantec.com/15t5jaD92Jiijt4ztf74x?h=cZIWzy3Q9k2MTdJ-Z3X5bD8POR6nFxCfEHP3mI43Buo=&u=https://www.ib.barclays/disclosures/important-disclosures-asia-pacific.html>.
__________________________________________________________________________________
For more details about how we use personal information, see our privacy notice: 
https://www.ib.barclays/disclosures/personal-information-use.html<https://clicktime.symantec.com/15t5pQQRUvQK9ptvSDWDa?h=7L8jQPnb4feGYIXIkHVU8obgMQC0JaTkbrYiRZ3xZBo=&u=https://www.ib.barclays/disclosures/personal-information-use.html>.
__________________________________________________________________________________

This message is for information purposes only. It is not a recommendation, 
advice, offer or solicitation to buy or sell a product or service, nor an 
official confirmation of any transaction. It is directed at persons who are 
professionals and is intended for the recipient(s) only. It is not directed at 
retail customers. This message is subject to the terms at: 
https://www.ib.barclays/disclosures/web-and-email-disclaimer.html. 

For important disclosures, please see: 
https://www.ib.barclays/disclosures/sales-and-trading-disclaimer.html regarding 
marketing commentary from Barclays Sales and/or Trading desks, who are active 
market participants; 
https://www.ib.barclays/disclosures/barclays-global-markets-disclosures.html 
regarding our standard terms for Barclays Investment Bank where we trade with 
you in principal-to-principal wholesale markets transactions; and in respect to 
Barclays Research, including disclosures relating to specific issuers, see: 
http://publicresearch.barclays.com.
__________________________________________________________________________________
 
If you are incorporated or operating in Australia, read these important 
disclosures: 
https://www.ib.barclays/disclosures/important-disclosures-asia-pacific.html.
__________________________________________________________________________________
For more details about how we use personal information, see our privacy notice: 
https://www.ib.barclays/disclosures/personal-information-use.html. 
__________________________________________________________________________________

Reply via email to