blob: 8a62be35190ee07cb0f2868e0943bb754bcc349a (
plain)
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
48
49
50
51
52
53
54
55
56
|
-- Copyright (c) 2021–2022 Teddy Wing
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <https://www.gnu.org/licenses/>.
-- Change keyboard layouts depending on presence of external keyboard.
local function is_imate(event)
return event['productName'] == 'iMate, USB To ADB Adaptor'
and event['vendorID'] == 1917
and event['productID'] == 1029
end
local function is_keychron(event)
return event['productName'] == 'Keychron C2'
and event['vendorID'] == 1452
and event['productID'] == 591
end
local function is_generic_keyboard(event)
local product_name_contains_word_keyboard = string.find(
string.lower(event['productName']),
"keyboard"
)
return product_name_contains_word_keyboard
end
keyboard_usb_watcher = hs.usb.watcher.new(function(event)
if not is_imate(event)
and not is_keychron(event)
and not is_generic_keyboard(event)
then
return
end
if event['eventType'] == 'added' then
hs.keycodes.setLayout('U.S.')
elseif event['eventType'] == 'removed' then
hs.keycodes.setLayout('QWAZERTY2')
end
end)
keyboard_usb_watcher:start()
|