Re: Show modeline when super key is pressed

<[email protected]> Tue, 31 Dec 2024 22:20:55 +0000
Newsgroups gmane.comp.window-managers.stumpwm.devel
Message-ID <[email protected]>
--=-=-=
Content-Type: text/plain


I put together a small asdf system to implement the functionality of
running code on key press/release of a modifier key. Its attached to
this email as a tarball with a readme. Its cleaner and more extensible
than the solution I gave earlier, and allows for arbitrary actions
instead of only mode line toggling.


--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=gmk.tar.gz
Content-Transfer-Encoding: base64
Content-Description: tarball of grabbable modifier keys

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
--=-=-=
Content-Type: text/plain



<[email protected]> writes:

>>
>> Some additional code to allow holding super to display the mode line:
>>
>> ``` lisp
>> (defun custom-press-handler (code state)
>>   (declare (ignore state))
>>   (let ((super-keycodes (nth-value 6 (xlib:modifier-mapping *display*))))
>>     (when (member code super-keycodes :test #'=)
>>       (toggle-mode-line (current-screen) (current-head))
>>       t)))
>>
>> (define-stump-event-handler :key-release (code state)
>>   (declare (ignore state))
>>   (let ((super-keycodes (nth-value 6 (xlib:modifier-mapping *display*))))
>>     (when (member code super-keycodes :test #'=)
>>       (toggle-mode-line (current-screen) (current-head))
>>       t)))
>>
>> (setf *custom-key-event-handler* 'custom-press-handler)
>> ```
>
> NB: the above code requires you to grab the super keycode, which for me
> is 133, though you can find it by calling xlib:modifier-mapping.
>
> You can grab it like so in your init file:
>
> ``` lisp
> (xlib:ungrab-key (screen-root (current-screen)) your-super-key-code)
> ```


--=-=-=--