Итак, я пытался настроить свою конфигурацию Awesome WM (rc.lua), чтобы определить, подключена ли моя модель IBM M13 к моему ноутбуку после входа в систему / сброса. Это необходимо для изменения того, каким должен быть мод-ключ, поскольку у M13 нет супер-ключа.
Следующий код имеет для меня смысл и меняет modkey внутри функции, созданной для функции awful.spawn.easy_async, но после завершения modkey возвращается к Mod4.
modkey = "Mod4"
awful.spawn.easy_async(
"xinput list",
function(stdout, stderr, reason, code)
local msg = "Regular keyboard Modkey = Super"
-- Debug notification that shows that the modkey is
-- at its default for the superkey Mod4
naughty.notify({
text = modkey,
timeout =7
})
if code ~= 0 then
msg = "Missing xinput to see devices\nModkey = Super"
elseif stdout:match("CHESEN") == "CHESEN" then
-- CHESEN is my PS/2 to USB adapter
msg = "IBM M13 detected\nModkey = Alt"
modkey = "Mod1" -- Sets new modkey to Alt
end
-- Notification message
naughty.notify({
text = msg,
timeout =7
})
end
)
-- Debug notification to verify key but key goes back to Mod4
naughty.notify({
text = modkey,
timeout =7
})
Результат можно увидеть здесь. Он не распечатывает уведомления по порядку, но оба отпечатка Mod 4 являются отпечатками отладки.
Я мало использую Lua, за исключением того, что время от времени меняю свои конфигурации, поэтому мне сложно понять, как можно изменить modkey моей глобальной переменной без ее сброса. Другие методы, которые я пробовал, состояли в том, чтобы определить функцию как функцию, которую я назвал setModKey, чтобы передать ее в качестве параметра easy_async, и я попытался установить modkey с помощью _G, чтобы установить его как _G.modkey, но в итоге получил тот же результат.
Мне не хватает чего-то фундаментального для Lua, или на это влияет то, как Awesome WM использует Lua? Любая помощь будет очень признательна.
awful.spawn.easy_async
? Если вы хотите, чтобы это происходило при каждом сбросе, просто поместите содержимое функции послеmodkey = "Mod4"
. - person Henri Menke   schedule 27.01.2018