alols / xcape

Linux utility to configure modifier keys to act as other keys when pressed and released on their own.
GNU General Public License v3.0
2.1k stars 117 forks source link

Binding Function 13-24 behaves weirdly #125

Open AkashaP opened 3 years ago

AkashaP commented 3 years ago

My macro pad is bound to F13+. log from xev | grep keysym: Normal F12: state 0x10, keycode 96 (keysym 0xffc9, F12), same_screen YES, Macro pad F13: state 0x10, keycode 191 (keysym 0x1008ff81, XF86Tools), same_screen YES,

Bind both F12 to 2 and F13 to 2

xcape -d -e 'F12=2;F13=2'

Assigned mapping from "F12" ( keysym 0xffc9, key code 96)
to "2" (keysym 0x32, key code 11)
Assigned mapping from "F13" ( keysym 0xffca, key code 191)
to "2" (keysym 0x32, key code 11)
sig_handler running...
Intercepted key event 3, key code 36
Intercepted key event 2, key code 96
Key pressed!
^[[24~Intercepted key event 3, key code 96
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 96
Key pressed!
^[[24~Intercepted key event 3, key code 96
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 191
Key pressed!
Intercepted key event 3, key code 191
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 191
Intercepted key event 3, key code 191
Intercepted key event 2, key code 191
Intercepted key event 3, key code 191
Intercepted key event 2, key code 191
Intercepted key event 3, key code 191
Intercepted key event 2, key code 191
Intercepted key event 3, key code 191
Intercepted key event 2, key code 191
Intercepted key event 3, key code 191
Intercepted key event 2, key code 191
Intercepted key event 3, key code 191
Intercepted key event 2, key code 191
Intercepted key event 3, key code 191

F13 stops generating 2 after the first catch

So as a quick test i tried duplicating the bindings

xcape -d -e 'F12=2;F12=2;F13=2;F13=2'

Assigned mapping from "F12" ( keysym 0xffc9, key code 96)
to "2" (keysym 0x32, key code 11)
Assigned mapping from "F12" ( keysym 0xffc9, key code 96)
to "2" (keysym 0x32, key code 11)
Assigned mapping from "F13" ( keysym 0xffca, key code 191)
to "2" (keysym 0x32, key code 11)
Assigned mapping from "F13" ( keysym 0xffca, key code 191)
to "2" (keysym 0x32, key code 11)
sig_handler running...
Intercepted key event 3, key code 36
Intercepted key event 2, key code 96
Key pressed!
Key pressed!
^[[24~Intercepted key event 3, key code 96
Key released!
Generating 2!
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
Ignoring generated event.
Ignoring generated event.
22Intercepted key event 2, key code 96
Key pressed!
Key pressed!
^[[24~Intercepted key event 3, key code 96
Key released!
Generating 2!
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 191
Key pressed!
Key pressed!
Intercepted key event 3, key code 191
Key released!
Generating 2!
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 191
Key pressed!
Key pressed!
Intercepted key event 3, key code 191
Key released!
Generating 2!
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 191
Key pressed!
Key pressed!
Intercepted key event 3, key code 191
Key released!
Generating 2!
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 191
Key pressed!
Key pressed!
Intercepted key event 3, key code 191
Key released!
Generating 2!
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Ignoring generated event.
Ignoring generated event.

Now they both press 2 twice, but F13 still works after the first catch

Duplicate with clone sent to an invalid binding xcape -d -e 'F12=2;F12=;F13=2;F13='

Assigned mapping from "F12" ( keysym 0xffc9, key code 96)
to "2" (keysym 0x32, key code 11)
Assigned mapping from "F12" ( keysym 0xffc9, key code 96)
Invalid key: 
Assigned mapping from "F13" ( keysym 0xffca, key code 191)
to "2" (keysym 0x32, key code 11)
Assigned mapping from "F13" ( keysym 0xffca, key code 191)
Invalid key: 
sig_handler running...
Intercepted key event 3, key code 36
Intercepted key event 2, key code 96
Key pressed!
^[[24~Intercepted key event 3, key code 96
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 96
Key pressed!
^[[24~Intercepted key event 3, key code 96
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 191
Key pressed!
Intercepted key event 3, key code 191
Key released!
Generating 2!
Ignoring generated event.
Ignoring generated event.
2Intercepted key event 2, key code 191
Intercepted key event 3, key code 191
Intercepted key event 2, key code 191
Intercepted key event 3, key code 191
Intercepted key event 2, key code 191
Intercepted key event 3, key code 191
Intercepted key event 2, key code 37
Intercepted key event 2, key code 54

didn't work, thought i got a quick workaround

(context: i'm trying to use this program to bind f13-24 to ALT+numpad keys, as the software im using it for does not detect them. 2 is just for debugging)

AkashaP commented 3 years ago

right, i can just send a backspace after to delete the duplicate afterwards or send a modifier key as a dummy, even better