Re: Tutorial: Notepad++ shortcuts.xml macro converts unicode to the 95-keyboard ASCII characters

Marian <[email protected]>
Newsgroups alt.comp.os.windows-10,alt.comp.os.windows-11,alt.comp.microsoft.windows
Organization BWH Usenet Archive (https://usenet.blueworldhosting.com)
Message-ID <[email protected]>
Marian wrote:
> Currently every shortcuts.xml mapping is written out as a 6-line block:
>   1700 -> start search
>   1601 -> set search string (funky character)
>   1625 -> clear replace buffer
>   1602 -> set replacement string (ASCII equivalent)
>   1702 -> run replace all
>   1701 -> end

UPDATE:

Drat. The original depended on 1700/1625/1701 around each replace.
So I removed the redundancy. When I tested it, only some characters worked.

But for characters like degree, copyright, trademark, registered, etc., Notepad++ apparently must have the reset (1700), clear (1625) and end (1701) lines around the replace (1702) because otherwise, AFAICT, the Find/Replace engine apparently doesn't execute. 

So we're stuck with the redundancy for Notepad++ to replace each character.
 Hyphens: - - - - - -
 Quotes: ' ' " " 'backtick'
 Ellipsis: ...
 Bullets: *
 Zero-widtha: ''' (these may look invisible)
 Spaces:      
 Symbols: 90deg (C) (TM) (R)
 Arrowa: ->
 Literals: - &amp;#151;
 Diacritics: g s e a
 SOH: [U+0001 here]
 etc.


Here is the latest working version which I tested against the above characters.

 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- Notepad++ shortcuts.xml version 1p1 20251211 -->
 <!-- Use model: ctrl+A (select all), ctrl=B (convert) -->
 <!--  -->
 <!-- 1700 start search -->
 <!-- 1601 set search string (funky character) -->
 <!-- 1625 clear replace buffer -->
 <!-- 1602 set replacement string (ASCII equivalent) -->
 <!-- 1702 run replace all -->
 <!-- 1701 end -->
 <!--  -->
 
 <NotepadPlus>
   <InternalCommands>
     <Shortcut id="43009" Ctrl="no" Alt="no" Shift="no" Key="0" />
   </InternalCommands>
 
   <Macros>
     <Macro name="ASCII" Ctrl="yes" Alt="no" Shift="no" Key="66">
 
       <!-- U+2010 HYPHEN ? "-" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2010;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2011 NON-BREAKING HYPHEN ? "-" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2011;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2012 FIGURE DASH ? "-" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2012;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2013 EN DASH ? "-" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2013;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2014 EM DASH ? "-" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2014;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2212 MINUS SIGN ? "-" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2212;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2018 LEFT SINGLE QUOTE ? "'" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2018;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2019 RIGHT SINGLE QUOTE ? "'" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2019;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+201C LEFT DOUBLE QUOTE ? "\"" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x201C;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="&quot;" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+201D RIGHT DOUBLE QUOTE ? "\"" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x201D;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="&quot;" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2026 HORIZONTAL ELLIPSIS ? "..." -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2026;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="..." />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2022 BULLET ? "*" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2022;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="*" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+200B ZERO WIDTH SPACE ? "" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x200B;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+200C ZERO WIDTH NON-JOINER ? "'" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x200C;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+200D ZERO WIDTH JOINER ? "'" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x200D;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2060 WORD JOINER ? "'" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2060;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+FEFF BOM ? "" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#xFEFF;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+00A0 NO-BREAK SPACE ? " " -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00A0;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2007 FIGURE SPACE ? " " -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2007;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+202F NARROW NO-BREAK SPACE ? " " -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x202F;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+00B0 DEGREE SIGN ? "deg" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00B0;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="deg" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+00A9 COPYRIGHT SIGN ? "(C)" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00A9;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="(C)" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2122 TRADE MARK SIGN ? "(TM)" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2122;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="(TM)" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+00AE REGISTERED SIGN ? "(R)" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00AE;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="(R)" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+2192 RIGHT ARROW ? "->" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2192;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="->" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- BACKTICK ? "'" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="`" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- Literal &zwnj; ? "-" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&zwnj;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- Literal &amp;#151; ? "&" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&amp;#151;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="&amp;" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+011F LATIN SMALL LETTER G WITH BREVE ? "g" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x011F;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="g" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+0161 LATIN SMALL LETTER S WITH CARON ? "s" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0161;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="s" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+011B LATIN SMALL LETTER E WITH CARON ? "e" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x011B;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="e" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+00E1 LATIN SMALL LETTER A WITH ACUTE ? "a" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00E1;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="a" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
       <!-- U+0001 SOH ? "" -->
       <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0001;" />
       <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
       <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
       <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
 
     </Macro>
   </Macros>
 
   <UserDefinedCommands>
     <Command name="Get PHP help" Ctrl="no" Alt="yes" Shift="no" Key="112">https://www.php.net/$(CURRENT_WORD)</Command>
     <Command name="Wikipedia Search" Ctrl="no" Alt="yes" Shift="no" Key="114">https://en.wikipedia.org/wiki/Special:Search?search=$(CURRENT_WORD)</Command>
     <Command name="Open file in another instance" Ctrl="no" Alt="yes" Shift="no" Key="117">$(NPP_FULL_FILE_PATH) $(CURRENT_WORD) -nosession -multiInst</Command>
   </UserDefinedCommands>
 
   <PluginCommands />
   <ScintillaKeys />
 </NotepadPlus>
 
 
-- 
I invest energy in composing Usenet posts because I care greatly about people
getting full & complete information so we move our tribal knowledge forward.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.