mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
emacs/vim style navigation everywhere
This commit is contained in:
@@ -74,6 +74,42 @@ QtObject {
|
|||||||
selectPrevious()
|
selectPrevious()
|
||||||
event.accepted = true
|
event.accepted = true
|
||||||
}
|
}
|
||||||
|
} else if (event.key === Qt.Key_N && event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (!modal.keyboardNavigationActive) {
|
||||||
|
modal.keyboardNavigationActive = true
|
||||||
|
modal.selectedIndex = 0
|
||||||
|
} else {
|
||||||
|
selectNext()
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_P && event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (!modal.keyboardNavigationActive) {
|
||||||
|
modal.keyboardNavigationActive = true
|
||||||
|
modal.selectedIndex = 0
|
||||||
|
} else if (modal.selectedIndex === 0) {
|
||||||
|
modal.keyboardNavigationActive = false
|
||||||
|
} else {
|
||||||
|
selectPrevious()
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_J && event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (!modal.keyboardNavigationActive) {
|
||||||
|
modal.keyboardNavigationActive = true
|
||||||
|
modal.selectedIndex = 0
|
||||||
|
} else {
|
||||||
|
selectNext()
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_K && event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (!modal.keyboardNavigationActive) {
|
||||||
|
modal.keyboardNavigationActive = true
|
||||||
|
modal.selectedIndex = 0
|
||||||
|
} else if (modal.selectedIndex === 0) {
|
||||||
|
modal.keyboardNavigationActive = false
|
||||||
|
} else {
|
||||||
|
selectPrevious()
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
} else if (event.key === Qt.Key_Delete && (event.modifiers & Qt.ShiftModifier)) {
|
} else if (event.key === Qt.Key_Delete && (event.modifiers & Qt.ShiftModifier)) {
|
||||||
modal.clearAll()
|
modal.clearAll()
|
||||||
modal.hide()
|
modal.hide()
|
||||||
|
|||||||
@@ -93,6 +93,48 @@ DankModal {
|
|||||||
selectedButton = 1
|
selectedButton = 1
|
||||||
event.accepted = true
|
event.accepted = true
|
||||||
break
|
break
|
||||||
|
case Qt.Key_N:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
keyboardNavigation = true
|
||||||
|
selectedButton = (selectedButton + 1) % 2
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_P:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
keyboardNavigation = true
|
||||||
|
selectedButton = selectedButton === -1 ? 1 : (selectedButton - 1 + 2) % 2
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_J:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
keyboardNavigation = true
|
||||||
|
selectedButton = 1
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_K:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
keyboardNavigation = true
|
||||||
|
selectedButton = 0
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_H:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
keyboardNavigation = true
|
||||||
|
selectedButton = 0
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_L:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
keyboardNavigation = true
|
||||||
|
selectedButton = 1
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
case Qt.Key_Tab:
|
case Qt.Key_Tab:
|
||||||
keyboardNavigation = true
|
keyboardNavigation = true
|
||||||
selectedButton = selectedButton === -1 ? 0 : (selectedButton + 1) % 2
|
selectedButton = selectedButton === -1 ? 0 : (selectedButton + 1) % 2
|
||||||
|
|||||||
@@ -239,7 +239,12 @@ DankModal {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (!keyboardNavigationActive) {
|
if (!keyboardNavigationActive) {
|
||||||
if (event.key === Qt.Key_Tab || event.key === Qt.Key_Down || event.key === Qt.Key_Right) {
|
const isInitKey = event.key === Qt.Key_Tab || event.key === Qt.Key_Down || event.key === Qt.Key_Right ||
|
||||||
|
(event.key === Qt.Key_N && event.modifiers & Qt.ControlModifier) ||
|
||||||
|
(event.key === Qt.Key_J && event.modifiers & Qt.ControlModifier) ||
|
||||||
|
(event.key === Qt.Key_L && event.modifiers & Qt.ControlModifier)
|
||||||
|
|
||||||
|
if (isInitKey) {
|
||||||
keyboardNavigationActive = true
|
keyboardNavigationActive = true
|
||||||
if (currentPath !== homeDir) {
|
if (currentPath !== homeDir) {
|
||||||
backButtonFocused = true
|
backButtonFocused = true
|
||||||
@@ -281,6 +286,69 @@ DankModal {
|
|||||||
}
|
}
|
||||||
event.accepted = true
|
event.accepted = true
|
||||||
break
|
break
|
||||||
|
case Qt.Key_N:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (backButtonFocused) {
|
||||||
|
backButtonFocused = false
|
||||||
|
selectedIndex = 0
|
||||||
|
} else if (selectedIndex < totalItems - 1) {
|
||||||
|
selectedIndex++
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_P:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (selectedIndex > 0) {
|
||||||
|
selectedIndex--
|
||||||
|
} else if (currentPath !== homeDir) {
|
||||||
|
backButtonFocused = true
|
||||||
|
selectedIndex = -1
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_J:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (selectedIndex < totalItems - 1) {
|
||||||
|
selectedIndex++
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_K:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (selectedIndex > 0) {
|
||||||
|
selectedIndex--
|
||||||
|
} else if (currentPath !== homeDir) {
|
||||||
|
backButtonFocused = true
|
||||||
|
selectedIndex = -1
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_H:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (!backButtonFocused && selectedIndex > 0) {
|
||||||
|
selectedIndex--
|
||||||
|
} else if (currentPath !== homeDir) {
|
||||||
|
backButtonFocused = true
|
||||||
|
selectedIndex = -1
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case Qt.Key_L:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (backButtonFocused) {
|
||||||
|
backButtonFocused = false
|
||||||
|
selectedIndex = 0
|
||||||
|
} else if (selectedIndex < totalItems - 1) {
|
||||||
|
selectedIndex++
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
break
|
||||||
case Qt.Key_Left:
|
case Qt.Key_Left:
|
||||||
if (backButtonFocused)
|
if (backButtonFocused)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -76,6 +76,30 @@ DankModal {
|
|||||||
}
|
}
|
||||||
event.accepted = true;
|
event.accepted = true;
|
||||||
break;
|
break;
|
||||||
|
case Qt.Key_N:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
selectedIndex = (selectedIndex + 1) % optionCount;
|
||||||
|
event.accepted = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Qt.Key_P:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
selectedIndex = (selectedIndex - 1 + optionCount) % optionCount;
|
||||||
|
event.accepted = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Qt.Key_J:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
selectedIndex = (selectedIndex + 1) % optionCount;
|
||||||
|
event.accepted = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Qt.Key_K:
|
||||||
|
if (event.modifiers & Qt.ControlModifier) {
|
||||||
|
selectedIndex = (selectedIndex - 1 + optionCount) % optionCount;
|
||||||
|
event.accepted = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -127,6 +127,44 @@ DankPopout {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event.key === Qt.Key_N && event.modifiers & Qt.ControlModifier) {
|
||||||
|
appLauncher.selectNext()
|
||||||
|
event.accepted = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.key === Qt.Key_P && event.modifiers & Qt.ControlModifier) {
|
||||||
|
appLauncher.selectPrevious()
|
||||||
|
event.accepted = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.key === Qt.Key_J && event.modifiers & Qt.ControlModifier) {
|
||||||
|
appLauncher.selectNext()
|
||||||
|
event.accepted = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.key === Qt.Key_K && event.modifiers & Qt.ControlModifier) {
|
||||||
|
appLauncher.selectPrevious()
|
||||||
|
event.accepted = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (appLauncher.viewMode === "grid") {
|
||||||
|
if (event.key === Qt.Key_L && event.modifiers & Qt.ControlModifier) {
|
||||||
|
appLauncher.selectNextInRow()
|
||||||
|
event.accepted = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.key === Qt.Key_H && event.modifiers & Qt.ControlModifier) {
|
||||||
|
appLauncher.selectPreviousInRow()
|
||||||
|
event.accepted = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!searchField.activeFocus && event.text && /[a-zA-Z0-9\s]/.test(event.text)) {
|
if (!searchField.activeFocus && event.text && /[a-zA-Z0-9\s]/.test(event.text)) {
|
||||||
searchField.forceActiveFocus()
|
searchField.forceActiveFocus()
|
||||||
searchField.insertText(event.text)
|
searchField.insertText(event.text)
|
||||||
|
|||||||
@@ -411,6 +411,78 @@ QtObject {
|
|||||||
selectPrevious()
|
selectPrevious()
|
||||||
event.accepted = true
|
event.accepted = true
|
||||||
}
|
}
|
||||||
|
} else if (event.key === Qt.Key_N && event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (!keyboardNavigationActive) {
|
||||||
|
keyboardNavigationActive = true
|
||||||
|
rebuildFlatNavigation()
|
||||||
|
selectedFlatIndex = 0
|
||||||
|
updateSelectedIdFromIndex()
|
||||||
|
if (listView) {
|
||||||
|
listView.keyboardActive = true
|
||||||
|
}
|
||||||
|
selectionVersion++
|
||||||
|
ensureVisible()
|
||||||
|
} else {
|
||||||
|
selectNext()
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_P && event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (!keyboardNavigationActive) {
|
||||||
|
keyboardNavigationActive = true
|
||||||
|
rebuildFlatNavigation()
|
||||||
|
selectedFlatIndex = 0
|
||||||
|
updateSelectedIdFromIndex()
|
||||||
|
if (listView) {
|
||||||
|
listView.keyboardActive = true
|
||||||
|
}
|
||||||
|
selectionVersion++
|
||||||
|
ensureVisible()
|
||||||
|
} else if (selectedFlatIndex === 0) {
|
||||||
|
keyboardNavigationActive = false
|
||||||
|
if (listView) {
|
||||||
|
listView.keyboardActive = false
|
||||||
|
}
|
||||||
|
selectionVersion++
|
||||||
|
} else {
|
||||||
|
selectPrevious()
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_J && event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (!keyboardNavigationActive) {
|
||||||
|
keyboardNavigationActive = true
|
||||||
|
rebuildFlatNavigation()
|
||||||
|
selectedFlatIndex = 0
|
||||||
|
updateSelectedIdFromIndex()
|
||||||
|
if (listView) {
|
||||||
|
listView.keyboardActive = true
|
||||||
|
}
|
||||||
|
selectionVersion++
|
||||||
|
ensureVisible()
|
||||||
|
} else {
|
||||||
|
selectNext()
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_K && event.modifiers & Qt.ControlModifier) {
|
||||||
|
if (!keyboardNavigationActive) {
|
||||||
|
keyboardNavigationActive = true
|
||||||
|
rebuildFlatNavigation()
|
||||||
|
selectedFlatIndex = 0
|
||||||
|
updateSelectedIdFromIndex()
|
||||||
|
if (listView) {
|
||||||
|
listView.keyboardActive = true
|
||||||
|
}
|
||||||
|
selectionVersion++
|
||||||
|
ensureVisible()
|
||||||
|
} else if (selectedFlatIndex === 0) {
|
||||||
|
keyboardNavigationActive = false
|
||||||
|
if (listView) {
|
||||||
|
listView.keyboardActive = false
|
||||||
|
}
|
||||||
|
selectionVersion++
|
||||||
|
} else {
|
||||||
|
selectPrevious()
|
||||||
|
}
|
||||||
|
event.accepted = true
|
||||||
} else if (keyboardNavigationActive) {
|
} else if (keyboardNavigationActive) {
|
||||||
if (event.key === Qt.Key_Space) {
|
if (event.key === Qt.Key_Space) {
|
||||||
toggleGroupExpanded()
|
toggleGroupExpanded()
|
||||||
|
|||||||
@@ -120,6 +120,18 @@ Popup {
|
|||||||
} else if (event.key === Qt.Key_Up) {
|
} else if (event.key === Qt.Key_Up) {
|
||||||
root.selectPrevious()
|
root.selectPrevious()
|
||||||
event.accepted = true
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_N && event.modifiers & Qt.ControlModifier) {
|
||||||
|
root.selectNext()
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_P && event.modifiers & Qt.ControlModifier) {
|
||||||
|
root.selectPrevious()
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_J && event.modifiers & Qt.ControlModifier) {
|
||||||
|
root.selectNext()
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_K && event.modifiers & Qt.ControlModifier) {
|
||||||
|
root.selectPrevious()
|
||||||
|
event.accepted = true
|
||||||
} else if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
|
} else if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
|
||||||
if (root.keyboardNavigationActive) {
|
if (root.keyboardNavigationActive) {
|
||||||
root.selectWidget()
|
root.selectWidget()
|
||||||
|
|||||||
@@ -266,6 +266,21 @@ Rectangle {
|
|||||||
Keys.onUpPressed: selectPrevious()
|
Keys.onUpPressed: selectPrevious()
|
||||||
Keys.onReturnPressed: selectCurrent()
|
Keys.onReturnPressed: selectCurrent()
|
||||||
Keys.onEnterPressed: selectCurrent()
|
Keys.onEnterPressed: selectCurrent()
|
||||||
|
Keys.onPressed: event => {
|
||||||
|
if (event.key === Qt.Key_N && event.modifiers & Qt.ControlModifier) {
|
||||||
|
selectNext()
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_P && event.modifiers & Qt.ControlModifier) {
|
||||||
|
selectPrevious()
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_J && event.modifiers & Qt.ControlModifier) {
|
||||||
|
selectNext()
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_K && event.modifiers & Qt.ControlModifier) {
|
||||||
|
selectPrevious()
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user