diff --git a/packages/nc-gui/components/cell/Checkbox.vue b/packages/nc-gui/components/cell/Checkbox.vue
index 04c5d73521..7af47815ef 100644
--- a/packages/nc-gui/components/cell/Checkbox.vue
+++ b/packages/nc-gui/components/cell/Checkbox.vue
@@ -1,5 +1,7 @@
@@ -72,6 +84,7 @@ function onClick() {
.nc-cell-hover-show {
opacity: 0;
transition: 0.3s opacity;
+
&:hover {
opacity: 0.7;
}
diff --git a/packages/nc-gui/composables/useSelectedCellKeyupListener/index.ts b/packages/nc-gui/composables/useSelectedCellKeyupListener/index.ts
new file mode 100644
index 0000000000..ef86be0e40
--- /dev/null
+++ b/packages/nc-gui/composables/useSelectedCellKeyupListener/index.ts
@@ -0,0 +1,20 @@
+import type { Ref } from 'vue'
+import { onUnmounted, useEventListener } from '#imports'
+
+export function useSelectedCellKeyupListener(selected: Ref, handler: (e: KeyboardEvent) => void) {
+ const cleanup: Ref | null> = ref(null)
+
+ watch(selected, (value) => {
+ if (value) {
+ cleanup.value = useEventListener('keydown', handler)
+ } else {
+ cleanup.value?.()
+ }
+ })
+
+ onUnmounted(() => cleanup.value?.())
+
+ return {
+ cleanup,
+ }
+}