mirror of
https://github.com/CrispyPin/ovr-utils.git
synced 2024-11-10 02:40:25 +01:00
toggle modifier keys and clear all pressed modifiers when normal key is pressed
This commit is contained in:
parent
899a3dce3d
commit
24ad04e262
2 changed files with 36 additions and 5 deletions
|
@ -4,11 +4,12 @@ const OVERLAY_PROPERTIES = {
|
||||||
"has_touch": true,
|
"has_touch": true,
|
||||||
}
|
}
|
||||||
|
|
||||||
export var key_size := 128
|
export var key_size := 120
|
||||||
export var key_row : PackedScene
|
export var key_row : PackedScene
|
||||||
export var key_button : PackedScene
|
export var key_button : PackedScene
|
||||||
|
|
||||||
var keymap := {}
|
var keymap := {}
|
||||||
|
var toggle_keys := []
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
load_keys("res://overlay_resources/keyboard/layouts/layout_se.json")
|
load_keys("res://overlay_resources/keyboard/layouts/layout_se.json")
|
||||||
|
@ -40,8 +41,15 @@ func apply_keys():
|
||||||
if key.has("width"):
|
if key.has("width"):
|
||||||
btn.rect_min_size.x *= key.width
|
btn.rect_min_size.x *= key.width
|
||||||
|
|
||||||
|
if key.has("toggle") and key.toggle:
|
||||||
|
btn.toggle_mode = true
|
||||||
|
btn.connect("toggled", self, "key_toggled", [key.keycode])
|
||||||
|
toggle_keys.append(btn)
|
||||||
|
else:
|
||||||
|
btn.connect("button_down", self, "key_down", [key.keycode])
|
||||||
|
btn.connect("button_up", self, "key_up", [key.keycode])
|
||||||
|
|
||||||
row_box.add_child(btn)
|
row_box.add_child(btn)
|
||||||
btn.connect("pressed", self, "key_pressed", [key.keycode])
|
|
||||||
|
|
||||||
# horizontal gaps
|
# horizontal gaps
|
||||||
if key.has("gap"):
|
if key.has("gap"):
|
||||||
|
@ -49,6 +57,7 @@ func apply_keys():
|
||||||
gapbox.rect_min_size.x = key.gap * key_size
|
gapbox.rect_min_size.x = key.gap * key_size
|
||||||
gapbox.name = "Gap"
|
gapbox.name = "Gap"
|
||||||
row_box.add_child(gapbox)
|
row_box.add_child(gapbox)
|
||||||
|
|
||||||
# vertical gaps
|
# vertical gaps
|
||||||
if row.has("gap"):
|
if row.has("gap"):
|
||||||
var gapbox = Control.new()
|
var gapbox = Control.new()
|
||||||
|
@ -57,7 +66,21 @@ func apply_keys():
|
||||||
$PanelContainer/CenterContainer/VBoxContainer.add_child(gapbox)
|
$PanelContainer/CenterContainer/VBoxContainer.add_child(gapbox)
|
||||||
|
|
||||||
|
|
||||||
func key_pressed(code, toggle=false):
|
func key_toggled(state, code):
|
||||||
GDVK.press(code)
|
if state:
|
||||||
|
GDVK.key_down(code)
|
||||||
|
else:
|
||||||
|
GDVK.key_up(code)
|
||||||
|
|
||||||
|
|
||||||
|
func key_down(code):
|
||||||
|
GDVK.key_down(code)
|
||||||
|
|
||||||
|
|
||||||
|
func key_up(code):
|
||||||
|
GDVK.key_up(code)
|
||||||
|
# clear all modifier keys
|
||||||
|
for k in toggle_keys:
|
||||||
|
if k.pressed:
|
||||||
|
k.pressed = false
|
||||||
|
|
||||||
|
|
|
@ -226,6 +226,7 @@
|
||||||
{
|
{
|
||||||
"keycode": "SHIFT",
|
"keycode": "SHIFT",
|
||||||
"display": "^",
|
"display": "^",
|
||||||
|
"toggle": true,
|
||||||
"width": 1.25
|
"width": 1.25
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -268,6 +269,7 @@
|
||||||
{
|
{
|
||||||
"keycode": "SHIFT",
|
"keycode": "SHIFT",
|
||||||
"display": "Shift",
|
"display": "Shift",
|
||||||
|
"toggle": true,
|
||||||
"width": 2.75
|
"width": 2.75
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -278,16 +280,19 @@
|
||||||
{
|
{
|
||||||
"keycode": "CONTROL",
|
"keycode": "CONTROL",
|
||||||
"display": "Ctrl",
|
"display": "Ctrl",
|
||||||
|
"toggle": true,
|
||||||
"width": 1.5
|
"width": 1.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"keycode": "SUPER",
|
"keycode": "SUPER",
|
||||||
"display": "Sup",
|
"display": "Sup",
|
||||||
|
"toggle": true,
|
||||||
"width": 1.25
|
"width": 1.25
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"keycode": "ALT",
|
"keycode": "ALT",
|
||||||
"display": "Alt",
|
"display": "Alt",
|
||||||
|
"toggle": true,
|
||||||
"width": 1.25
|
"width": 1.25
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -298,11 +303,13 @@
|
||||||
{
|
{
|
||||||
"keycode": "ALT",
|
"keycode": "ALT",
|
||||||
"display": "Alt",
|
"display": "Alt",
|
||||||
|
"toggle": true,
|
||||||
"width": 1.25
|
"width": 1.25
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"keycode": "SUPER",
|
"keycode": "SUPER",
|
||||||
"display": "Sup",
|
"display": "Sup",
|
||||||
|
"toggle": true,
|
||||||
"width": 1.25
|
"width": 1.25
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -313,6 +320,7 @@
|
||||||
{
|
{
|
||||||
"keycode": "CONTROL",
|
"keycode": "CONTROL",
|
||||||
"display": "Ctrl",
|
"display": "Ctrl",
|
||||||
|
"toggle": true,
|
||||||
"width": 1.5
|
"width": 1.5
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in a new issue