MCPcopy Create free account
hub / github.com/winfunc/opcode / handleKeyDown

Function handleKeyDown

src/components/FilePicker.tsx:187–233  ·  view source on GitHub ↗
(e: KeyboardEvent)

Source from the content-addressed store, hash-verified

185 // Keyboard navigation
186 useEffect(() => {
187 const handleKeyDown = (e: KeyboardEvent) => {
188 const displayEntries = searchQuery.trim() ? searchResults : entries;
189
190 switch (e.key) {
191 case 'Escape':
192 e.preventDefault();
193 onClose();
194 break;
195
196 case 'Enter':
197 e.preventDefault();
198 // Enter always selects the current item (file or directory)
199 if (displayEntries.length > 0 && selectedIndex < displayEntries.length) {
200 onSelect(displayEntries[selectedIndex]);
201 }
202 break;
203
204 case 'ArrowUp':
205 e.preventDefault();
206 setSelectedIndex(prev => Math.max(0, prev - 1));
207 break;
208
209 case 'ArrowDown':
210 e.preventDefault();
211 setSelectedIndex(prev => Math.min(displayEntries.length - 1, prev + 1));
212 break;
213
214 case 'ArrowRight':
215 e.preventDefault();
216 // Right arrow enters directories
217 if (displayEntries.length > 0 && selectedIndex < displayEntries.length) {
218 const entry = displayEntries[selectedIndex];
219 if (entry.is_directory) {
220 navigateToDirectory(entry.path);
221 }
222 }
223 break;
224
225 case 'ArrowLeft':
226 e.preventDefault();
227 // Left arrow goes back to parent directory
228 if (canGoBack) {
229 navigateBack();
230 }
231 break;
232 }
233 };
234
235 window.addEventListener('keydown', handleKeyDown);
236 return () => window.removeEventListener('keydown', handleKeyDown);

Callers

nothing calls this directly

Calls 2

navigateToDirectoryFunction · 0.85
navigateBackFunction · 0.85

Tested by

no test coverage detected