Unexpected behavior in neovide when using Text Selection Did Changed


As the title suggests, whenever the Text Selection Did Change feature is used, Neovide exhibits unexpected behavior: when selecting text with the mouse, a keymap is sent to nvim, causing the text to be deleted. I recently discovered this feature, and when I tested the samples shared in the documentation, I realized there was an issue with my Neovide. I don’t use it as often as I do nvim in a terminal, but coincidentally, I had it open when I was experimenting with the new feature. The keymap that is sent is c, and this only happens when I select text with the mouse. It does not occur when I do the same in nvim running in a terminal. I have the following code in an app group; it’s not even global.

Sample Code
[
  {
    "BTTLastUpdatedAt" : 1760650628.129205,
    "BTTTriggerType" : 806,
    "BTTTriggerTypeDescriptionReadOnly" : "Text Selection Did Change",
    "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers",
    "BTTUUID" : "F3060661-F4CE-4E8A-973F-6476862ED549",
    "BTTOrder" : 0,
    "BTTActionsToExecute" : [
      {
        "BTTLastUpdatedAt" : 1760647802.8482561,
        "BTTTriggerParentUUID" : "F3060661-F4CE-4E8A-973F-6476862ED549",
        "BTTIsPureAction" : true,
        "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers",
        "BTTUUID" : "B0F1844D-2A65-4AE0-AD0B-6C63325C7D46",
        "BTTPredefinedActionType" : 330,
        "BTTPredefinedActionName" : "If Condition",
        "BTTIfConditionFormat" : "BTTTextSelectionType == \"double-click\"",
        "BTTIfConditionData" : "YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGvEBYLDBMYICorLTQ4PT5BRUlOT1JaXmJkVSRudWxs0w0ODxAREl8QF05TQ29tcG91bmRQcmVkaWNhdGVUeXBlXxAPTlNTdWJwcmVkaWNhdGVzViRjbGFzcxABgAKAFdIUDxUXWk5TLm9iamVjdHOhFoADgBTUDxkaGxwdHh9fEBFOU1JpZ2h0RXhwcmVzc2lvbl8QEE5TTGVmdEV4cHJlc3Npb25fEBNOU1ByZWRpY2F0ZU9wZXJhdG9ygBOADoAEgBHVISIjJA8lJicoKVlOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzgAaABRADgAiADVx2YWx1ZUZvcktleTrSIw8QLIAH0i4vMDFaJGNsYXNzbmFtZVgkY2xhc3Nlc18QEE5TU2VsZkV4cHJlc3Npb26jMDIzXE5TRXhwcmVzc2lvblhOU09iamVjdNIUDzU3oTaACYAM0w8jOTo7PFlOU0tleVBhdGiACxAKgApfEBRCVFRUZXh0U2VsZWN0aW9uVHlwZdIuLz9AXxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqM_MjPSLi9CQ15OU011dGFibGVBcnJheaNCRDNXTlNBcnJhedIuL0ZHXxATTlNLZXlQYXRoRXhwcmVzc2lvbqRGSDIzXxAUTlNGdW5jdGlvbkV4cHJlc3Npb27TSiMPS0xNXxAPTlNDb25zdGFudFZhbHVlgA8QAIAQXGRvdWJsZS1jbGlja9IuL1BRXxAZTlNDb25zdGFudFZhbHVlRXhwcmVzc2lvbqNQMjPVD1NUVVZXTFhMWVpOU01vZGlmaWVyWE5TTmVnYXRlWU5TT3B0aW9uc15OU09wZXJhdG9yVHlwZYASCBAE0i4vW1xfEBtOU0VxdWFsaXR5UHJlZGljYXRlT3BlcmF0b3KjW10zXxATTlNQcmVkaWNhdGVPcGVyYXRvctIuL19gXxAVTlNDb21wYXJpc29uUHJlZGljYXRlo19hM1tOU1ByZWRpY2F0ZdIuL0RjokQz0i4vZWZfEBNOU0NvbXBvdW5kUHJlZGljYXRlo2VhMwAIABEAGgAkACkAMgA3AEkATABRAFMAbAByAHkAkwClAKwArgCwALIAtwDCAMQAxgDIANEA5QD4AQ4BEAESARQBFgEhASsBOgFNAVkBWwFdAV8BYQFjAXABdQF3AXwBhwGQAaMBpwG0Ab0BwgHEAcYByAHPAdkB2wHdAd8B9gH7AhoCHgIjAjICNgI+AkMCWQJeAnUCfAKOApACkgKUAqECpgLCAsYC0QLcAuUC7wL+AwADAQMDAwgDJgMqA0ADRQNdA2EDbQNyA3UDegOQAAAAAAAAAgEAAAAAAAAAZwAAAAAAAAAAAAAAAAAAA5Q=",
        "BTTOrder" : 1
      },
      {
        "BTTLastUpdatedAt" : 1760563377.2917771,
        "BTTTriggerParentUUID" : "F3060661-F4CE-4E8A-973F-6476862ED549",
        "BTTIsPureAction" : true,
        "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers",
        "BTTUUID" : "D0D7A692-6EFF-4C62-9B47-5835C767F55A",
        "BTTPredefinedActionType" : 254,
        "BTTPredefinedActionName" : "Show HUD Overlay",
        "BTTHUDActionConfiguration" : "{\"BTTActionHUDBlur\":true,\"BTTActionHUDBackground\":\"0.000000, 0.000000, 0.000000, 0.000000\",\"BTTIconConfigImageHeight\":100,\"BTTActionHUDPosition\":0,\"BTTActionHUDDetail\":\"\",\"BTTActionHUDDuration\":0.90000000000000002,\"BTTActionHUDDisplayToUse\":0,\"BTTIconConfigImageWidth\":100,\"BTTActionHUDSlideDirection\":0,\"BTTActionHUDHideWhenOtherHUDAppears\":false,\"BTTActionHUDWidth\":220,\"BTTActionHUDAttributedTitle\":\"{\\\\rtf1\\\\ansi\\\\ansicpg1252\\\\cocoartf2822\\n\\\\cocoatextscaling0\\\\cocoaplatform0{\\\\fonttbl\\\\f0\\\\fswiss\\\\fcharset0 Helvetica-Bold;\\\\f1\\\\fswiss\\\\fcharset0 Helvetica;}\\n{\\\\colortbl;\\\\red255\\\\green255\\\\blue255;\\\\red0\\\\green0\\\\blue0;}\\n{\\\\*\\\\expandedcolortbl;;\\\\cssrgb\\\\c0\\\\c0\\\\c0\\\\c84706\\\\cname labelColor;}\\n\\\\pard\\\\tx560\\\\tx1120\\\\tx1680\\\\tx2240\\\\tx2800\\\\tx3360\\\\tx3920\\\\tx4480\\\\tx5040\\\\tx5600\\\\tx6160\\\\tx6720\\\\pardirnatural\\\\qc\\\\partightenfactor0\\n\\n\\\\f0\\\\b\\\\fs80 \\\\cf2 test\\n\\\\f1\\\\b0\\\\fs24 \\\\\\n\\\\pard\\\\tx560\\\\tx1120\\\\tx1680\\\\tx2240\\\\tx2800\\\\tx3360\\\\tx3920\\\\tx4480\\\\tx5040\\\\tx5600\\\\tx6160\\\\tx6720\\\\pardirnatural\\\\qc\\\\partightenfactor0\\n\\n\\\\fs48 \\\\cf2 test2}\",\"BTTActionHUDBorderWidth\":0,\"BTTActionHUDTitle\":\"\",\"BTTActionHUDHeight\":220}",
        "BTTOrder" : 2
      },
      {
        "BTTLastUpdatedAt" : 1760563377.293278,
        "BTTTriggerParentUUID" : "F3060661-F4CE-4E8A-973F-6476862ED549",
        "BTTIsPureAction" : true,
        "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers",
        "BTTUUID" : "18FF42D3-008B-43D4-BDE4-13A944C28357",
        "BTTPredefinedActionType" : 333,
        "BTTPredefinedActionName" : "Else",
        "BTTOrder" : 3
      },
      {
        "BTTLastUpdatedAt" : 1760563377.2932539,
        "BTTTriggerParentUUID" : "F3060661-F4CE-4E8A-973F-6476862ED549",
        "BTTIsPureAction" : true,
        "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers",
        "BTTUUID" : "3C993BB9-BC71-44B3-A6B2-8BE3A25DC48B",
        "BTTPredefinedActionType" : 334,
        "BTTPredefinedActionName" : "END If Condition",
        "BTTOrder" : 4
      }
    ]
  }
]

Device information:

  • Type of Mac: macbook pro
  • macOS version: 15.6.1
  • BetterTouchTool version: 5.670

I see the same, or similar behaviour. In my case it seems that a “cmd + c” is send, since it yanks the selected lines to the clipboard. I do have that keymap setup, though with vim.keymap.set("v", "<D-c>", '"+y') -- Copy. When that is disabled, the text is removed, like in OPs case. I believe it does not know that to do with the “cmd” modifer in that case.

It seems to me that the “Text selection Did Change” issues a “cmd + c” to copy the selected text somewhere to be used. That is fine in most cases but cannot unfortunately be disabled with scoped app groups or conditions.

It would be great if that trigger would resect at least the “Advanced Conditions” then it could be disabled for Neovide in particular or even better not send any key events and copy the text in a different way.

Cheers

Device information:

  • Type of Mac: macbook pro m1
  • macOS version: 26.1 (25B78)
  • BetterTouchTool version: 5.800

Addendum, after looking further into it.

It seems even the supplied conditions in the “Activation Group” when you download the preset do not seem to work. Blender is setup in there by default and when I select text in a Blender it is replaced by a “c”. The Key overlay of CleanShot X shows the “cmd” key as well. On a side note: I cannot use the “drag to select capture area” of CleanShot X, since after dragging the “text selection did change” trigger activates and (probably) sends a “cmd-c” which exits the screen recording overlay.

Something seems odd with this trigger. Tools like PopClip do not have this issue, maybe they get the selected text in a different way.

The issue with CleanShot X, or in general with “Text Selection Did change” trigger stealing focus/sending key commands is also mentioned in another issue: BTT Text Selection steals focus?