kmonad / kmonad/kmonad

Windows 11: Citrix "ignores" backspace, arrow keys, and others

Open
#682 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
Haskell
Stars
5.1k
Forks
337
PR merge metrics
No merged PRs in 30d

Description

Hi,

I recently took a dive into kmonad (a colleague recommended it to me a while back) and find it a very curious and potentially valuable piece of software. So _thank you_ for putting effort into this!

On Linux it works well. When using on Windows 11, I experience that some buttons do not work in some situations. (Compiled most recent kmonad version with stack as outlined [here](https://github.com/kmonad/kmonad/blob/master/doc/installation.md#windows-environment).)

# What does not work

In particular, while all the following buttons work in local applications, they don't work in the Citrix client. I.e. they have no effect at all in the remote desktop:
- the normal Backspace
- Backspace when defined as repetition from another button, as in `(defalias grv (tap-hold-next 100 grv bspc))` (the unrepeated button, grv in this case, does work)
- arrow keys
- page up/down
- Alt
- Win+Shift+... (Win alone works, but e.g. Win+Shift+s for taking a screenshot does not when kmonad runs)
- maybe more

# What does work

On the other hand, keys like e.g. _;_ can be used to activate layers:

```
(defcfg
input (low-level-hook)
output (send-event-sink)
)

# defsrc is here

(deflayer base
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 home end ins del
@grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p @lcb @rcb \
ret @a s d f g h j k l @; ' ret
lsft z x c v b n m , . / rsft
lctl lmet lalt spc ralt prnt rctl pgup up pgdn
left down rght
)

(defalias
; (tap-next ; (layer-toggle parens)))
# more aliases

(deflayer parens
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX XX { [ \( < > \) ] } XX XX XX
XX XX XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX XX XX XX XX
XX XX XX
)

# more layers
```

I can hold down _;_ and type all sorts of {[(<>)]} from my home row.

# Thought/Solution?

It seems to have to do with how Citrix grabs keyboard events. Is there a general way to tell a windows application what keyboard to grab events from? So that I could force Citrix (and others) to grab what kmonad produces? I couldn't find a general way to do it when searching the internet (and also no Citrix-specific way)--so I figured maybe somebody in this very place knows an answer.

Thanks again!
🙂

Contributor guide

Open the contributing guide

Research direction

Start with the Windows environment section of doc/installation.md and reproduce the report using the shown low-level-hook and send-event-sink configuration. Test the listed keys in local applications and Citrix, then trace where their input handling differs. Done means identifying the Windows/Citrix compatibility cause and documenting a concrete direction for resolving it.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.