2016-01-03 1 views
0

Может ли кто-нибудь дать мне подсказку, как предотвратить выключение мыши из определенного окна или полноэкранного режима? Пробовал это с помощью трех парных игр (Satellite Reign, Cities: Skylines & Civ 5), все имеют одинаковую проблему: как только я перемещаю мышь на границе (для панорамирования экрана), фокус переключается на мой второй монитор.В awesome-wm: Как предотвратить перемещение мыши от клиента? (например, полноэкранная или оконная игра)

Любой совет или намек на правый источник (я предполагаю, что поведение мыши как свойство пользовательского клиента?) Очень приветствуется :)

Спасибо!

ответ

0

Удивительные сигналы wm могут быть полезны. Вот краткий пример (больше похоже на подсказку), как он работает.
Поместите это где-то в начале rc.lua

local is_mouse_locked = false 

Этот код положить внутри client.connect_signal("manage", function (c, startup) блока

-- in this example 
-- signal connected to every window and make action if 'is_mouse_locked' switcher active 
-- however much better would be connect and disconnect signal to certain window by hotkey 
c:connect_signal("mouse::leave", 
    function(c) 
     if is_mouse_locked then 
      local cg = c:geometry() -- get window size 
      local mg = mouse.coords() -- get current mouse position 

      -- quick and dirty calculate for mouse position correction 
      local newx = mg.x <= cg.x and cg.x + 5 or mg.x >= (cg.x + cg.width) and cg.x + cg.width - 5 or mg.x 
      local newy = mg.y <= cg.y and cg.y + 5 or mg.y >= (cg.y + cg.height) and cg.y + cg.height - 5 or mg.y 

      -- set mouse to new position 
      mouse.coords({ x = newx, y = newy }) 
     end 
    end 
) 

и добавить горячие клавиши

awful.key({ modkey,   }, "v", function() is_mouse_locked = not is_mouse_locked end), 

 Смежные вопросы

  • Нет связанных вопросов^_^