forked from satori/dotrc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkeyboard_layout.lua
47 lines (40 loc) · 1.07 KB
/
keyboard_layout.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
local capi = {awesome = awesome}
local keyboard_layout = {}
local last_xcb_layout_group = 0
local function update_layout(c, group)
awesome.xkb_set_layout_group(group)
last_xcb_layout_group = awesome.xkb_get_layout_group()
c.xcb_layout_group = last_xcb_layout_group
end
local function set_layout(c, group)
if c.disable_kbd_switch then
group = 0
elseif group == nil then
group = c.xcb_layout_group or last_xcb_layout_group
end
update_layout(c, group)
end
function keyboard_layout.cycle(c, inc)
local current = awesome.xkb_get_layout_group()
set_layout(c, current + inc)
end
function keyboard_layout.next(c)
keyboard_layout.cycle(c, 1)
end
function keyboard_layout.prev(c)
keyboard_layout.cycle(c, -1)
end
client.connect_signal("focus", function(c) set_layout(c, nil) end)
capi.awesome.connect_signal(
"xkb::group_changed",
function ()
update_layout(client.focus or {}, awesome.xkb_get_layout_group())
end
)
capi.awesome.connect_signal(
"xkb::map_changed",
function ()
print('map changed')
end
)
return keyboard_layout