[New Plugin] SurroundSelection



  • 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



  • 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.



  • 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



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



  • 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



  • @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



  • @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



  • @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 ;)



  • Hello dail,

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

    Best regards.



  • 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



  • Hello dail,

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

    Best regards.



  • 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


Log in to reply