Cloudef / wlc

High-level Wayland compositor library
MIT License
330 stars 58 forks source link

Provide API for accessing and configuring input devices #6

Open Cloudef opened 9 years ago

Cloudef commented 9 years ago

Multiple keyboards with different layouts and rules is useful. So may be other device specific configuration (like disabling touchpad and so on).

wasamasa commented 9 years ago

The general idea is that hacks like detecting a plugged in keyboard and setting keyboard options for the currently plugged one with a script are very brittle and hard to pull off correctly.

Xorg offers you to set XKB options both generally and for matching devices, with that functionality one can have keyboard-specific options that just work. It appears as if all keyboard input is matched against the device information and specified options.

Own config.

Cloudef commented 8 years ago

For now I exposed libinput devices in wlc.h, this probably makes most sense. But I keep this issue open if there are problems.

Cloudef commented 8 years ago

I also exposed xkb_keymap and xkb_state, however no multiple keyboards yet nor layout configuration ...

wasamasa commented 7 years ago

I've handed in an enhancement request for libinput: https://bugs.freedesktop.org/show_bug.cgi?id=98194

klardotsh commented 7 years ago

Yep, I'm considering moving to Sway from AwesomeWM on Xorg, but I use dvorak - software on my laptop's internal keyboard, and hardware on my ErgoDox EZ. It took some fighting with xorg.conf, but it was doable. I see no real way of doing this in any wayland compositor I've looked into so far, short of using an XKB toggle key (maybe the AppMenu key? That annoying thing bound to Fn+RCtrl on my laptop internal board?)

Earnestly commented 7 years ago

All of those Xkb* options are exposed via environment variables which xkbcommon uses, e.g. XKB_DEFAULT_LAYOUT, XKB_DEFAULT_OPTIONS, XKB_DEFAULT_VARIANT, etc.

They all accept the same format and arguments as the xorg.conf.

wasamasa commented 7 years ago

@iv597 I finally solved this in a global manner by writing my own hwdb rules that match per device, that way I only need to enable a compose key rule in Xorg (with setxkbmap or a config option) and Wayland (with XKB_DEFAULT_OPTIONS). In other words, I'm inclined to close this issue, but won't as there's a linked one that cannot be solved this way.

Relevant commit: https://github.com/wasamasa/dotfiles/commit/ca0825125ba0f026cafa3f4351a84eeaea25b410