Community
    • Login

    [New Plugin] SurroundSelection

    Scheduled Pinned Locked Moved Notepad++ & Plugin Development
    12 Posts 5 Posters 6.3k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • dailD
      dail
      last edited by

      This automatically surrounds the selection(s) in quotes/brackets/parenthesis/etc that you type. This can also be used on multiple or rectangular selections. This is a nice feature in SublimeText and wanted it in Notepad++. I threw this together quickly for my own use but figured others might find it of interest.

      Note: This is still in early development. It has not been tested with non-US keyboard layouts. This uses a keyboard hook instead of normal N++ shortcuts. If anyone can check this out on a different layout I’d appreciate it.

      demo

      Download (32 & 64bit): https://github.com/dail8859/SurroundSelection/releases
      Readme/code/github project: https://github.com/dail8859/SurroundSelection

      1 Reply Last reply Reply Quote 7
      • YaronY
        Yaron
        last edited by

        Hello dail,

        Thank you for this nice and useful feature. I appreciate your prolific great work.

        It works perfectly both with English and Hebrew keyboard layout.

        Some suggestions/questions:

        1. An option to toggle the selection surrounding would be a nice addition.
        2. Any reason only the opening characters surrounds the selection?
        3. This is related to [2]: in RTL ( { [ are the closing characters.

        Best regards.

        1 Reply Last reply Reply Quote 0
        • DaveyDD
          DaveyD
          last edited by

          Hi Dail, Awesome plugin! Thanks!
          I’ve wanted this functionality for quite a while now, I even “made” a python script to do this, only to later learn that I can’t get the keystrokes before the text is overridden… so it didn’t work. I thought to try my first plugin, but never got around to it… Now I don’t have to, thanks to you!

          I tested it on my machine - plain ol’ English - but I tested it and it worked perfectly!

          Regards,
          David

          1 Reply Last reply Reply Quote 0
          • chcgC
            chcg
            last edited by

            Could you update PluginManagers list with the new plugin if you consider it stable enough for more widespreaded usage.

            1 Reply Last reply Reply Quote 0
            • guy038G
              guy038
              last edited by guy038

              Hi, @Dail,

              I was quite eager to test your plugin, on my French configuration ! At first sight, it did not seem to work, on my N++ v7.3.3 configuration, with default plugins, except for the DSpellCheek.dll plugin !

              But, as you spoke about testing our current layout, I began to test all the keys combinations, on my French keyboard…

              I, finally, got the five equivalent keys, on a French keyboard :

              For [......]   =>           VK_OEM_4 key   =   FR Key   ° ) ]
              
              For {......}   =>   SHIFT + VK_OEM_4 key   
              
              For (......)   =>   SHIFT + VK_9     key   =   FR Key   9 ç ^
              
              For '......'   =>           VK_OEM_7 key   =   FR Key   ²
              
              For "......"   =>   SHIFT + VK_OEM_7 key
              

              @dail, to compare the US and FR keyboard layouts, just click on the two links, below :

              http://ascii-table.com/keyboard.php/103P-1

              http://ascii-table.com/keyboard.php/189

              ( BTW, I’ve never seen any French 251 keyboard layout !? )

              Any keyboard, from a world list, can be seen, at :

              http://ascii-table.com/keyboards.php


              In addition, you’ll find, in the two next posts, two lists, of my own, which recapitulate :

              • Firstly, all VK_ codes, in hexa and decimal, of all keys of a standard American keyboard

              • Secondly, all VK_ codes, in hexa and decimal, of all keys of a standard French keyboard

              I do hope that these lists may help you, somehow !

              Best Regards,

              guy038

              1 Reply Last reply Reply Quote 1
              • guy038G
                guy038
                last edited by guy038

                @dail,

                As explained, in my previous post, here is the US list of VK_codes of an US keyboard

                
                // https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
                
                // http://ascii-table.com/keyboards.php
                
                
                *==================*========*=======*===================*
                |     VK Name      |  Hex   |  Dec  |      Notes        |
                *------------------*--------*-------*-------------------*
                |  VK_NULL         |  0x00  |    0  |                   |
                *==================*========*=======*===================*
                
                
                *==================*========*=======*===================*
                |  US keyboard   -   LEFT part   -   FIRST Row          |
                *------------------*--------*-------*-------------------*
                |     VK Name      |  Hex   |  Dec  |      Notes        |
                *------------------*--------*-------*-------------------*
                |  VK_ESCAPE       |  0x1B  |   27  |                   |
                |                  |        |       |                   |
                |  VK_F1           |  0x70  |  112  |                   |
                |  VK_F2           |  0x71  |  113  |                   |
                |  VK_F3           |  0x72  |  114  |                   |
                |  VK_F4           |  0x73  |  115  |                   |
                |                  |        |       |                   |
                |  VK_F5           |  0x74  |  116  |                   |
                |  VK_F6           |  0x75  |  117  |                   |
                |  VK_F7           |  0x76  |  118  |                   |
                |  VK_F8           |  0x77  |  119  |                   |
                |                  |        |       |                   |
                |  VK_F9           |  0x78  |  120  |                   |
                |  VK_F10          |  0x79  |  121  |                   |
                |  VK_F11          |  0x7A  |  122  |                   |
                |  VK_F12          |  0x7B  |  123  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   LEFT part   -   SECOND Row         !
                *------------------*--------*-------*-------------------*
                |  VK_OEM_3        |  0xC0  |  192  |  Key US  '~ `'    |
                |  VK_1            |  0x31  |   49  |                   |
                |  VK_2            |  0x32  |   50  |                   |
                |  VK_3            |  0x33  |   51  |                   |
                |  VK_4            |  0x34  |   52  |                   |
                |  VK_5            |  0x35  |   53  |                   |
                |  VK_6            |  0x36  |   54  |                   |
                |  VK_7            |  0x37  |   55  |                   |
                |  VK_8            |  0x38  |   56  |                   |
                |  VK_9            |  0x39  |   57  |                   |
                |  VK_0            |  0x30  |   48  |                   |
                |  VK_OEM_MINUS    |  0xBD  |  189  |  Key US  '_ -'    |
                |  VK_OEM_PLUS     |  0xBB  |  187  |  Key US  '+ ='    |
                |  VK_BACK         |  0x08  |    8  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   LEFT part   -   THIRD Row          |
                *------------------*--------*-------*-------------------*
                |  VK_TAB          |  0x09  |    9  |                   |
                |  VK_Q            |  0x51  |   81  |                   |
                |  VK_W            |  0x57  |   87  |                   |
                |  VK_E            |  0x45  |   69  |                   |
                |  VK_R            |  0x52  |   82  |                   |
                |  VK_T            |  0x54  |   84  |                   |
                |  VK_Y            |  0x59  |   89  |                   |
                |  VK_U            |  0x55  |   85  |                   |
                |  VK_I            |  0x49  |   73  |                   |
                |  VK_O            |  0x4F  |   79  |                   |
                |  VK_P            |  0x50  |   80  |                   |
                |  VK_OEM_4        |  0xDB  |  219  |  Key US  '{ ['    |
                |  VK_OEM_6        |  0xDD  |  221  |  Key US  '} ]'    |
                |  VK_OEM_5        |  0xDC  |  220  |  Key US  '| \'    |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   LEFT part   -   FOURTH Row         |
                *------------------*--------*-------*-------------------*
                |  VK_CAPITAL      |  0x14  |   20  |                   |
                |  VK_A            |  0x41  |   65  |                   |
                |  VK_S            |  0x53  |   83  |                   |
                |  VK_D            |  0x44  |   68  |                   |
                |  VK_F            |  0x46  |   70  |                   |
                |  VK_G            |  0x47  |   71  |                   |
                |  VK_H            |  0x48  |   72  |                   |
                |  VK_J            |  0x4A  |   74  |                   |
                |  VK_K            |  0x4B  |   75  |                   |
                |  VK_L            |  0x4C  |   76  |                   |
                |  VK_OEM_1        |  0xBA  |  186  |  Key US  ': ;'    |
                |  VK_OEM_7        |  0xDE  |  222  |  Key US  '" ''    |
                |  VK_RETURN       |  0x0D  |   13  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   LEFT part   -   FIFTH Row          |
                *------------------*--------*-------*-------------------*
                |  VK_SHIFT        |  0x10  |   16  |                   |
                |  VK_Z            |  0x5A  |   90  |                   |
                |  VK_X            |  0x58  |   88  |                   |
                |  VK_C            |  0x43  |   67  |                   |
                |  VK_V            |  0x56  |   86  |                   |
                |  VK_B            |  0x42  |   66  |                   |
                |  VK_N            |  0x4E  |   78  |                   |
                |  VK_M            |  0x4D  |   77  |                   |
                |  VK_OEM_COMMA    |  0xBC  |  188  |  Key US  '< ,'    |
                |  VK_OEM_PERIOD   |  0xBE  |  190  |  Key US  '> .'    |
                |  VK_OEM_2        |  0xBF  |  191  |  Key US  '? /'    |
                |  VK_SHIFT        |  0x10  |   16  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   LEFT part   -   SIXTH Row          |
                *------------------*--------*-------*-------------------*
                |  VK_CONTROL      |  0x11  |   17  |                   |
                |  VK_LWIN         |  0x5B  |   91  |                   |
                |  VK_MENU         |  0x12  |   18  |                   |
                |  VK_SPACE        |  0x20  |   32  |                   |
                |  VK_RWIN         |  0x5C  |   92  |                   |
                |  VK_APPS         |  0x5D  |   93  |                   |
                |  VK_CONTROL      |  0x11  |   17  |                   |
                *==================*========*=======*===================*
                
                
                *==================*========*=======*===================*
                |  US keyboard   -   MIDDLE part   -   FIRST Row        |
                *------------------*--------*-------*-------------------*
                |     VK Name      |  Hex   |  Dec  |      Notes        |
                *------------------*--------*-------*-------------------*
                |  VK_INSERT       |  0x2D  |   45  |                   |
                |  VK_HOME         |  0x24  |   36  |                   |
                |  VK_PRIOR        |  0x21  |   33  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   MIDDLE part   -   SECOND Row       |
                *------------------*--------*-------*-------------------*
                |  VK_DELETE       |  0x2E  |   46  |                   |
                |  VK_END          |  0x23  |   35  |                   |
                |  VK_NEXT         |  0x22  |   34  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   MIDDLE part   -   THIRD Row        |
                *------------------*--------*-------*-------------------*
                |  VK_UP           |  0x26  |   38  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   MIDDLE part   -   FOURTH Row       |
                *------------------*--------*-------*-------------------*
                |  VK_LEFT         |  0x25  |   37  |                   |
                |  VK_DOWN         |  0x28  |   40  |                   |
                |  VK_RIGHT        |  0x27  |   39  |                   |
                *==================*========*=======*===================*
                
                
                *==================*========*=======*===================*
                |  US keyboard   -   RIGHT part   -   FIRST Row         |
                *------------------*--------*-------*-------------------*
                |     VK Name      |  Hex   |  Dec  |      Notes        |
                *------------------*--------*-------*-------------------*
                |  VK_SNAPSHOT     |  0x2C  |   44  |                   |
                |  VK_SCROLL       |  0x91  |  145  |                   |
                |  VK_PAUSE        |  0x13  |   19  |                   |
                |  VK_ATTN         |  0xF6  |  246  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   RIGHT part   -   SECOND Row        |
                *------------------*--------*-------*-------------------*
                |  VK_NUMLOCK      |  0x90  |  144  |                   |
                |  VK_DIVIDE       |  0x6F  |  111  |                   |
                |  VK_MULTIPLY     |  0x6A  |  106  |                   |
                |  VK_SUBTRACT     |  0x6D  |  109  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   RIGHT part   -   THIRD Row         |
                *------------------*--------*-------*-------------------*
                |  VK_NUMPAD7      |  0x67  |  103  |                   |
                |  VK_NUMPAD8      |  0x68  |  104  |                   |
                |  VK_NUMPAD9      |  0x69  |  105  |                   |
                |  VK_ADD          |  0x6B  |  107  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   RIGHT part   -   FOURTH Row        |
                *------------------*--------*-------*-------------------*
                |  VK_NUMPAD4      |  0x64  |  100  |                   |
                |  VK_NUMPAD5      |  0x65  |  101  |                   |
                |  VK_NUMPAD6      |  0x66  |  102  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   RIGHT part   -   FIFTH Row         |
                *------------------*--------*-------*-------------------*
                |  VK_NUMPAD1      |  0x61  |   97  |                   |
                |  VK_NUMPAD2      |  0x62  |   98  |                   |
                |  VK_NUMPAD3      |  0x63  |   99  |                   |
                *------------------*--------*-------*-------------------*
                |  US keyboard   -   RIGHT part   -   SIXTH Row         |
                *------------------*--------*-------*-------------------*
                |  VK_NUMPAD0      |  0x60  |   96  |                   |
                |  VK_DECIMAL      |  0x6E  |  110  |                   |
                |  VK_RETURN       |  0x0D  |   13  |                   |
                *==================*========*=======*===================*
                
                
                *=======================================================*
                |                  OTHER Virtual Keys                   |
                *------------------*--------*-------*-------------------*
                |  VK_CANCEL       |  0x03  |    3  |                   |
                |  VK_CLEAR        |  0x0C  |   12  |                   |
                |                  |        |       |                   |
                |  VK_KANA         |  0x15  |   21  |                   |
                |  VK_HANGUL       |  0x15  |   21  |                   |
                |  VK_JUNJA        |  0x17  |   23  |                   |
                |  VK_FINAL        |  0x18  |   24  |                   |
                |  VK_HANJA        |  0x19  |   25  |                   |
                |  VK_KANJI        |  0x19  |   25  |                   |
                |                  |        |       |                   |
                |  VK_CONVERT      |  0x1C  |   28  |                   |
                |  VK_NONCONVERT   |  0x1D  |   29  |                   |
                |  VK_ACCEPT       |  0x1E  |   30  |                   |
                |  VK_MODECHANGE   |  0x1F  |   31  |                   |
                |                  |        |       |                   |
                |  VK_SELECT       |  0x29  |   41  |                   |
                |  VK_PRINT        |  0x2A  |   42  |                   |
                |  VK_EXECUTE      |  0x2B  |   43  |                   |
                |  VK_HELP         |  0x2F  |   47  |                   |
                |                  |        |       |                   |
                |  VK_SLEEP        |  0x5F  |   95  |                   |
                |                  |        |       |                   |
                |  VK_SEPARATOR    |  0x6C  |  108  |                   |
                |                  |        |       |                   |
                |  VK_F13          |  0x7C  |  124  |                   |
                |  VK_F14          |  0x7D  |  125  |                   |
                |  VK_F15          |  0x7E  |  126  |                   |
                |  VK_F16          |  0x7F  |  127  |                   |
                |  VK_F17          |  0x80  |  128  |                   |
                |  VK_F18          |  0x81  |  129  |                   |
                |  VK_F19          |  0x82  |  130  |                   |
                |  VK_F20          |  0x83  |  131  |                   |
                |  VK_F21          |  0x84  |  132  |                   |
                |  VK_F22          |  0x85  |  133  |                   |
                |  VK_F23          |  0x86  |  134  |                   |
                |  VK_F24          |  0x87  |  135  |                   |
                |                  |        |       |                   |
                |  VK_OEM_8        |  0xDF  |  223  |                   |
                |                  |        |       |                   |
                |  VK_OEM_102      |  0xE2  |  226  |  Key US  '< >'    |
                |  VK_OEM_RESET    |  0xE9  |  233  |                   |
                |  VK_OEM_JUMP     |  0xEA  |  234  |                   |
                |  VK_OEM_PA1      |  0xEB  |  235  |                   |
                |  VK_OEM_PA2      |  0xEC  |  236  |                   |
                |  VK_OEM_PA3      |  0xED  |  237  |                   |
                |  VK_OEM_WSCTRL   |  0xEE  |  238  |                   |
                |  VK_OEM_CUSEL    |  0xEF  |  239  |                   |
                |                  |        |       |                   |
                |  VK_OEM_ATTN     |  0xF0  |  240  |                   |
                |  VK_OEM_FINISH   |  0xF1  |  241  |                   |
                |  VK_OEM_COPY     |  0xF2  |  242  |                   |
                |  VK_OEM_AUTO     |  0xF3  |  243  |                   |
                |  VK_OEM_ENLW     |  0xF4  |  244  |                   |
                |  VK_OEM_BACKTAB  |  0xF5  |  245  |                   |
                |  VK_CRSEL        |  0xF7  |  247  |                   |
                |  VK_EXSEL        |  0xF8  |  248  |                   |
                |  VK_EREOF        |  0xF9  |  249  |                   |
                |  VK_PLAY         |  0xFA  |  250  |                   |
                |  VK_ZOOM         |  0xFB  |  251  |                   |
                |  VK_NONAME       |  0xFC  |  252  |                   |
                |  VK_PA1          |  0xFD  |  253  |                   |
                |  VK_OEM_CLEAR    |  0xFE  |  254  |                   |
                *==================*========*=======*===================*
                

                Cheers,

                guy038

                1 Reply Last reply Reply Quote 0
                • guy038G
                  guy038
                  last edited by

                  @dail,

                  And, here is, below, the equivalent list of VK_codes, on a standard FR keyboard !

                  *==================*========*=======*===================*
                  |     VK Name      |  Hex   |  Dec  |      Notes        |
                  *------------------*--------*-------*-------------------*
                  |  VK_NULL         |  0x00  |    0  |                   |
                  *==================*========*=======*===================*
                  
                  
                  *==================*========*=======*===================*
                  |  FRENCH keyboard   -   LEFT part   -   FIRST Row      |
                  *------------------*--------*-------*-------------------*
                  |     VK Name      |  Hex   |  Dec  |      Notes        |
                  *------------------*--------*-------*-------------------*
                  |  VK_ESCAPE       |  0x1B  |   27  |                   |
                  |                  |        |       |                   |
                  |  VK_F1           |  0x70  |  112  |                   |
                  |  VK_F2           |  0x71  |  113  |                   |
                  |  VK_F3           |  0x72  |  114  |                   |
                  |  VK_F4           |  0x73  |  115  |                   |
                  |                  |        |       |                   |
                  |  VK_F5           |  0x74  |  116  |                   |
                  |  VK_F6           |  0x75  |  117  |                   |
                  |  VK_F7           |  0x76  |  118  |                   |
                  |  VK_F8           |  0x77  |  119  |                   |
                  |                  |        |       |                   |
                  |  VK_F9           |  0x78  |  120  |                   |
                  |  VK_F10          |  0x79  |  121  |                   |
                  |  VK_F11          |  0x7A  |  122  |                   |
                  |  VK_F12          |  0x7B  |  123  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   LEFT part   -   SECOND Row     !
                  *------------------*--------*-------*-------------------*
                  |  VK_OEM_7        |  0xDE  |  222  |  Key FR  '²'      |
                  |  VK_1            |  0x31  |   49  |                   |
                  |  VK_2            |  0x32  |   50  |                   |
                  |  VK_3            |  0x33  |   51  |                   |
                  |  VK_4            |  0x34  |   52  |                   |
                  |  VK_5            |  0x35  |   53  |                   |
                  |  VK_6            |  0x36  |   54  |                   |
                  |  VK_7            |  0x37  |   55  |                   |
                  |  VK_8            |  0x38  |   56  |                   |
                  |  VK_9            |  0x39  |   57  |                   |
                  |  VK_0            |  0x30  |   48  |                   |
                  |  VK_OEM_4        |  0xDB  |  219  |  Key FR  '° ) ]'  |
                  |  VK_OEM_PLUS     |  0xBB  |  187  |  Key FR  '+ = }'  |
                  |  VK_BACK         |  0x08  |    8  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   LEFT part   -   THIRD Row      |
                  *------------------*--------*-------*-------------------*
                  |  VK_TAB          |  0x09  |    9  |                   |
                  |  VK_A            |  0x41  |   65  |                   |
                  |  VK_Z            |  0x5A  |   90  |                   |
                  |  VK_E            |  0x45  |   69  |                   |
                  |  VK_R            |  0x52  |   82  |                   |
                  |  VK_T            |  0x54  |   84  |                   |
                  |  VK_Y            |  0x59  |   89  |                   |
                  |  VK_U            |  0x55  |   85  |                   |
                  |  VK_I            |  0x49  |   73  |                   |
                  |  VK_O            |  0x4F  |   79  |                   |
                  |  VK_P            |  0x50  |   80  |                   |
                  |  VK_OEM_6        |  0xDD  |  221  |  Key FR  '¨ ^'    |
                  |  VK_OEM_1        |  0xBA  |  186  |  Key FR  '£ $ ¤'  |
                  |  VK_RETURN       |  0x0D  |   13  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   LEFT part   -   FOURTH Row     |
                  *------------------*--------*-------*-------------------*
                  |  VK_CAPITAL      |  0x14  |   20  |                   |
                  |  VK_Q            |  0x51  |   81  |                   |
                  |  VK_S            |  0x53  |   83  |                   |
                  |  VK_D            |  0x44  |   68  |                   |
                  |  VK_F            |  0x46  |   70  |                   |
                  |  VK_G            |  0x47  |   71  |                   |
                  |  VK_H            |  0x48  |   72  |                   |
                  |  VK_J            |  0x4A  |   74  |                   |
                  |  VK_K            |  0x4B  |   75  |                   |
                  |  VK_L            |  0x4C  |   76  |                   |
                  |  VK_M            |  0x4D  |   77  |                   |
                  |  VK_OEM_3        |  0xC0  |  192  |  Key FR  '% ù'    |
                  |  VK_OEM_5        |  0xDC  |  220  |  Key FR  'µ *'    |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   LEFT part   -   FIFTH Row      |
                  *------------------*--------*-------*-------------------*
                  |  VK_SHIFT        |  0x10  |   16  |                   |
                  |  VK_OEM_102      |  0xE2  |  226  |  Key FR  '> <'    |
                  |  VK_W            |  0x57  |   87  |                   |
                  |  VK_X            |  0x58  |   88  |                   |
                  |  VK_C            |  0x43  |   67  |                   |
                  |  VK_V            |  0x56  |   86  |                   |
                  |  VK_B            |  0x42  |   66  |                   |
                  |  VK_N            |  0x4E  |   78  |                   |
                  |  VK_OEM_COMMA    |  0xBC  |  188  |  Key FR  '? ,'    |
                  |  VK_OEM_PERIOD   |  0xBE  |  190  |  Key FR  '. ;'    |
                  |  VK_OEM_2        |  0xBF  |  191  |  Key FR  '/ :'    |
                  |  VK_OEM_8        |  0xDF  |  223  |  Key FR  '§ !'    |
                  |  VK_SHIFT        |  0x10  |   16  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   LEFT part   -   SIXTH Row      |
                  *------------------*--------*-------*-------------------*
                  |  VK_CONTROL      |  0x11  |   17  |                   |
                  |  VK_LWIN         |  0x5B  |   91  |                   |
                  |  VK_MENU         |  0x12  |   18  |                   |
                  |  VK_SPACE        |  0x20  |   32  |                   |
                  |  VK_RWIN         |  0x5C  |   92  |                   |
                  |  VK_APPS         |  0x5D  |   93  |                   |
                  |  VK_CONTROL      |  0x11  |   17  |                   |
                  *==================*========*=======*===================*
                  
                  
                  *==================*========*=======*===================*
                  |  FRENCH keyboard   -   MIDDLE part   -   FIRST Row    |
                  *------------------*--------*-------*-------------------*
                  |     VK Name      |  Hex   |  Dec  |      Notes        |
                  *------------------*--------*-------*-------------------*
                  |  VK_INSERT       |  0x2D  |   45  |                   |
                  |  VK_HOME         |  0x24  |   36  |                   |
                  |  VK_PRIOR        |  0x21  |   33  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   MIDDLE part   -   SECOND Row   |
                  *------------------*--------*-------*-------------------*
                  |  VK_DELETE       |  0x2E  |   46  |                   |
                  |  VK_END          |  0x23  |   35  |                   |
                  |  VK_NEXT         |  0x22  |   34  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   MIDDLE part   -   THIRD Row    |
                  *------------------*--------*-------*-------------------*
                  |  VK_UP           |  0x26  |   38  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   MIDDLE part   -   FOURTH Row   |
                  *------------------*--------*-------*-------------------*
                  |  VK_LEFT         |  0x25  |   37  |                   |
                  |  VK_DOWN         |  0x28  |   40  |                   |
                  |  VK_RIGHT        |  0x27  |   39  |                   |
                  *==================*========*=======*===================*
                  
                  
                  *==================*========*=======*===================*
                  |  FRENCH keyboard   -   RIGHT part   -   FIRST Row     |
                  *------------------*--------*-------*-------------------*
                  |     VK Name      |  Hex   |  Dec  |      Notes        |
                  *------------------*--------*-------*-------------------*
                  |  VK_SNAPSHOT     |  0x2C  |   44  |                   |
                  |  VK_SCROLL       |  0x91  |  145  |                   |
                  |  VK_PAUSE        |  0x13  |   19  |                   |
                  |  VK_ATTN         |  0xF6  |  246  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   RIGHT part   -   SECOND Row    |
                  *------------------*--------*-------*-------------------*
                  |  VK_NUMLOCK      |  0x90  |  144  |                   |
                  |  VK_DIVIDE       |  0x6F  |  111  |                   |
                  |  VK_MULTIPLY     |  0x6A  |  106  |                   |
                  |  VK_SUBTRACT     |  0x6D  |  109  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   RIGHT part   -   THIRD Row     |
                  *------------------*--------*-------*-------------------*
                  |  VK_NUMPAD7      |  0x67  |  103  |                   |
                  |  VK_NUMPAD8      |  0x68  |  104  |                   |
                  |  VK_NUMPAD9      |  0x69  |  105  |                   |
                  |  VK_ADD          |  0x6B  |  107  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   RIGHT part   -   FOURTH Row    |
                  *------------------*--------*-------*-------------------*
                  |  VK_NUMPAD4      |  0x64  |  100  |                   |
                  |  VK_NUMPAD5      |  0x65  |  101  |                   |
                  |  VK_NUMPAD6      |  0x66  |  102  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   RIGHT part   -   FIFTH Row     |
                  *------------------*--------*-------*-------------------*
                  |  VK_NUMPAD1      |  0x61  |   97  |                   |
                  |  VK_NUMPAD2      |  0x62  |   98  |                   |
                  |  VK_NUMPAD3      |  0x63  |   99  |                   |
                  *------------------*--------*-------*-------------------*
                  |  FRENCH keyboard   -   RIGHT part   -   SIXTH Row     |
                  *------------------*--------*-------*-------------------*
                  |  VK_NUMPAD0      |  0x60  |   96  |                   |
                  |  VK_DECIMAL      |  0x6E  |  110  |                   |
                  |  VK_RETURN       |  0x0D  |   13  |                   |
                  *==================*========*=======*===================*
                  
                  
                  *=======================================================*
                  |                  OTHER Virtual Keys                   |
                  *------------------*--------*-------*-------------------*
                  |  VK_CANCEL       |  0x03  |    3  |                   |
                  |  VK_CLEAR        |  0x0C  |   12  |                   |
                  |                  |        |       |                   |
                  |  VK_KANA         |  0x15  |   21  |                   |
                  |  VK_HANGUL       |  0x15  |   21  |                   |
                  |  VK_JUNJA        |  0x17  |   23  |                   |
                  |  VK_FINAL        |  0x18  |   24  |                   |
                  |  VK_HANJA        |  0x19  |   25  |                   |
                  |  VK_KANJI        |  0x19  |   25  |                   |
                  |                  |        |       |                   |
                  |  VK_CONVERT      |  0x1C  |   28  |                   |
                  |  VK_NONCONVERT   |  0x1D  |   29  |                   |
                  |  VK_ACCEPT       |  0x1E  |   30  |                   |
                  |  VK_MODECHANGE   |  0x1F  |   31  |                   |
                  |                  |        |       |                   |
                  |  VK_SELECT       |  0x29  |   41  |                   |
                  |  VK_PRINT        |  0x2A  |   42  |                   |
                  |  VK_EXECUTE      |  0x2B  |   43  |                   |
                  |  VK_HELP         |  0x2F  |   47  |                   |
                  |                  |        |       |                   |
                  |  VK_SLEEP        |  0x5F  |   95  |                   |
                  |                  |        |       |                   |
                  |  VK_SEPARATOR    |  0x6C  |  108  |                   |
                  |                  |        |       |                   |
                  |  VK_F13          |  0x7C  |  124  |                   |
                  |  VK_F14          |  0x7D  |  125  |                   |
                  |  VK_F15          |  0x7E  |  126  |                   |
                  |  VK_F16          |  0x7F  |  127  |                   |
                  |  VK_F17          |  0x80  |  128  |                   |
                  |  VK_F18          |  0x81  |  129  |                   |
                  |  VK_F19          |  0x82  |  130  |                   |
                  |  VK_F20          |  0x83  |  131  |                   |
                  |  VK_F21          |  0x84  |  132  |                   |
                  |  VK_F22          |  0x85  |  133  |                   |
                  |  VK_F23          |  0x86  |  134  |                   |
                  |  VK_F24          |  0x87  |  135  |                   |
                  |                  |        |       |                   |
                  |  VK_OEM_MINUS    |  0xBD  |  189  |                   |
                  |                  |        |       |                   |
                  |  VK_OEM_RESET    |  0xE9  |  233  |                   |
                  |  VK_OEM_JUMP     |  0xEA  |  234  |                   |
                  |  VK_OEM_PA1      |  0xEB  |  235  |                   |
                  |  VK_OEM_PA2      |  0xEC  |  236  |                   |
                  |  VK_OEM_PA3      |  0xED  |  237  |                   |
                  |  VK_OEM_WSCTRL   |  0xEE  |  238  |                   |
                  |  VK_OEM_CUSEL    |  0xEF  |  239  |                   |
                  |                  |        |       |                   |
                  |  VK_OEM_ATTN     |  0xF0  |  240  |                   |
                  |  VK_OEM_FINISH   |  0xF1  |  241  |                   |
                  |  VK_OEM_COPY     |  0xF2  |  242  |                   |
                  |  VK_OEM_AUTO     |  0xF3  |  243  |                   |
                  |  VK_OEM_ENLW     |  0xF4  |  244  |                   |
                  |  VK_OEM_BACKTAB  |  0xF5  |  245  |                   |
                  |  VK_CRSEL        |  0xF7  |  247  |                   |
                  |  VK_EXSEL        |  0xF8  |  248  |                   |
                  |  VK_EREOF        |  0xF9  |  249  |                   |
                  |  VK_PLAY         |  0xFA  |  250  |                   |
                  |  VK_ZOOM         |  0xFB  |  251  |                   |
                  |  VK_NONAME       |  0xFC  |  252  |                   |
                  |  VK_PA1          |  0xFD  |  253  |                   |
                  |  VK_OEM_CLEAR    |  0xFE  |  254  |                   |
                  *==================*========*=======*===================*
                  

                  Cheers,

                  guy038

                  1 Reply Last reply Reply Quote 0
                  • dailD
                    dail
                    last edited by

                    @Yaron

                    An option to toggle the selection surrounding would be a nice addition.

                    This has been committed now so this will be in the next release.

                    Any reason only the opening characters surrounds the selection?

                    Honestly I just did it this way since this is what SublimeText does and was waiting to see if anyone would mention it ;) But I can definitely understand how this would be a bit confusing for RTL having to type the closing characters. So this has also been pushed and will be in the next release.

                    @chcg

                    I’ll probably still wait a little while to see if there are any bugs or improvements before putting it in the PM.

                    @guy038

                    Thanks for the testing and very detailed information!

                    @ anybody

                    As I don’t have any way of easily testing other types of layouts I would be glad to accept any Pull Requests adding support for other layouts ;)

                    1 Reply Last reply Reply Quote 0
                    • YaronY
                      Yaron
                      last edited by

                      Hello dail,

                      Thank you for accepting and implementing my requests. I appreciate it.
                      I’ll be looking forward to the next version. :)

                      Best regards.

                      1 Reply Last reply Reply Quote 0
                      • dailD
                        dail
                        last edited by

                        v1.1 has been release for your typing pleasure. This release has a few minor updates:

                        • Add menu option to enable/disable plugin
                        • Allow typing of closing symbols (e.g. ), ], or })

                        Download (32 & 64bit): https://github.com/dail8859/SurroundSelection/releases/tag/v1.1

                        1 Reply Last reply Reply Quote 1
                        • YaronY
                          Yaron
                          last edited by

                          Hello dail,

                          Thank you very much for the new version. I appreciate it.
                          It’s working like a charm. Great work.

                          Best regards.

                          1 Reply Last reply Reply Quote 0
                          • guy038G
                            guy038
                            last edited by guy038

                            Hello, @dail,

                            With your new version 1.1 of your SurroundSelection.dll plugin, the equivalent keys, on my French keyboard, are, as below :

                                                        VK_OEM_4 key   =   FR Key   ° ) ]
                            For [......]   =>
                                                        VK_OEM_6 key   =   FR Key   ^ ¨
                            
                            
                            
                                                SHIFT + VK_OEM_4 key   =   FR Key   ° ) ]
                            For {......}   =>                           
                                                SHIFT + VK_OEM_6 key   =   FR Key   ^ ¨
                            
                            
                            
                                                SHIFT + VK_9     key   =   FR Key   9 ç ^
                            For (......)   =>
                                                SHIFT + VK_0     key   =   FR Key   0 à @
                            
                            
                            
                            For '......'   =>           VK_OEM_7 key   =   FR Key   ²
                            
                            
                            
                            For "......"   =>   SHIFT + VK_OEM_7 key   =   FR Key   ²
                            

                            @dail, although I’m quite able to remember these five weird French keys, is there any way to adapt your plugin to “non-English” users ?

                            May be, I’m going to tell some technical impossibilities, but why not a simple .ini file, where these five keys could be defined ?

                            Anyway, @dail, many thanks for that very handy plugin, especially, when using rectangular selection !!

                            Cheers,

                            guy038

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post
                            The Community of users of the Notepad++ text editor.
                            Powered by NodeBB | Contributors