The issue seems to be Keysharp interfering!

Original post:


I have this set up as a startup script, but it only sometimes triggers, despite setting a 20-second delay:

#!/bin/bash
sleep 2
xmodmap -e "clear lock"
xmodmap -e "keycode 66 = Return"

I have the startup command set to bash "path/Remap_Caps_Lock_to_Enter.sh". What's going on? It works when I press the triangle button when it doesn't work on boot.

you are viewing a single comment's thread
view the rest of the comments
[–] [S] 2 points 2 months ago* (5 children)

Dang, sorry to read about your ban. By the way, I think it is Keysharp that is causing the problem because it seems to be working just fine when I have that app disabled. I do like it a lot though, so I'll keep tinkering and finding some way to possibly try to get both of them to work concurrently. It uses Microsoft's .NET 10 runtime, but the latest versions have been having issues on my PC, so I've been going without Keysharp, and the Caps Lock reconfiguration is working flawlessly, haha. Thanks for your patience!

  • source
  • parent
  • hideshow 5 child comments
  • [–] 1 point 2 months ago (4 children)

    Thank you for the update! Just to clarify, I am sorry, what is KeySharp exactly? Is it one of the following?:
    - https://github.com/goaaats/KeySharp
    - https://github.com/mfeemster/keysharp
    - https://apps.microsoft.com/detail/9nkmq5kbjg59

  • source
  • parent
  • hideshow 4 child comments
  • [–] [S] 2 points 2 months ago (3 children)
  • [–] 2 points 2 months ago (2 children)

    Thank you very much for sharing!

    AutoHotKey (AHK) are quite great for Windows, yet I am not sure about Linux, where you may have even more featureful and optimal solutions based on Xorg/Wayland, and/or your desktop environment (e.g., KDE Plasma).
    Unless you don't want/have time to migrate these Windows-oriented scripts, are you sure you want to depend on them?

  • source
  • parent
  • hideshow 2 child comments
  • [–] [S] 1 point 2 months ago (1 child)

    I ported over as much as I could to Espanso, yeah. I appreciate your concern and would ideally ditch this software too but the problem is that I haven't found a really competent equivalent; Python is just way too tricky to figure out and libraries like pywinauto or whatever it's called are really limited in terms of what they're capable of doing (not enough!), or AutoKey is just insanely complex with so many files being needed versus just one master file that one can use with AutoHotkey (which I also use at my Windows-mandated workplace).

    For example, one frequently used script of mine in AutoHotkey/Keysharp purges the clipboard's URL of all known trackers before pasting, even doing HTML-decoding as needed if encoding is detected. I haven't been able to find anything that can as easily do this on Linux, though I suppose I could poke around more, or if worse comes to worst, try to have an AI build a cross-platform one, haha.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 1 month ago*

    As we know, it depends on the actual environment, where simpler or more complex options are available out-of-the-box.
    Meanwhile, have you tried?:
    - https://github.com/hluk/copyq
    - https://copyq.readthedocs.io/en/latest/scripting.html

    In CopyQ, since its compiled with the clipboard event handling, it's sure possible to handle these events, including changing the content or launching custom scripts, and though I don't like Python, I do like JavaScript, and CopyQ has built-in support for quite limited but JavaScript with its own API function built-in to handle it, mentioned in the documentation above.

    Preview of the settings I've just checked out in a Kubuntu machine I had on hands:

    | | | |


    |


    | | | |

    And it worked! The quick scripts I tried are the following:

    The one for CopyQ (I had v6.0.1)Apparently, it does not support

    copyq:
    try {
        var original = str(clipboard());
    } catch(e) {
        abort();
    }
    
    // If empty or too long
    if (!original || original.length > 10000) {
         abort();
    }
    
    try {
        var executed = execute('/home/user/scripts/clean-url.sh', original);
    } catch(e) {
        abort();
    }
    
    // If failed to execute
    if (!executed) {
        abort();
    }
    
    var cleaned = str(executed.stdout).trim();
    
    // If empty or matches the original (CopyQ may get into a loop otherwise)
    if (!cleaned || !cleaned.length || cleaned === original) {
        abort();
    }
    
    // Change the clipboard buffer
    copy(cleaned);
    
    

    That program or script, to clean it, may be anything you prefer of course, including Bash, Perl, PHP, JavaScript, or what AutoHotKey does/executes in your case possibly.


    There's the following to automate the read/write I know but haven't used, too:
    - https://github.com/Slackadays/Clipboard

    In Wayland, you may use wl-paste to read, and wl-copy to write into the clipboard.
    In X11, xclip to both read and write.

    The thing is that there should be some kind of event to handle on the clipboard change, and there options as DBus or Qt, yet I am not currently aware of a verified option to do so without an actually compiler program to subscribe to such an event.

    For instance, Klipper, the Qt program, uses the even handling over DBus exposed via its libraries for convenience.

  • source
  • parent