useKeyPress

useKeyPress hooks like React

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/534449/1580339/useKeyPress.js

  1. // useKeyPress.js
  2.  
  3. function useKeyPress(targetKey, callback) {
  4. // 이벤트 리스너 함수
  5. function handleKeyPress(event) {
  6. if (event.key === targetKey) {
  7. callback(event); // 해당 키가 눌렸을 때 콜백 호출
  8. }
  9. }
  10.  
  11. // 'keydown' 이벤트 리스너 등록
  12. document.addEventListener('keydown', handleKeyPress);
  13.  
  14. // 반환된 객체에 이벤트 리스너를 제거하는 함수 포함
  15. return () => {
  16. document.removeEventListener('keydown', handleKeyPress);
  17. };
  18. }
  19.  
  20. // useKeyPress.js
  21.  
  22. function useKeysPress(targetKeys, callback) {
  23. // 눌린 키를 추적할 Set 객체
  24. const pressedKeys = new Set();
  25.  
  26. // 'keydown' 이벤트 리스너 함수
  27. function handleKeyDown(event) {
  28. pressedKeys.add(event.key);
  29.  
  30. // targetKeys에 있는 모든 키가 눌렸는지 확인
  31. if (targetKeys.every(key => pressedKeys.has(key))) {
  32. callback(event); // 모든 키가 눌렸을 때 콜백 호출
  33. }
  34. }
  35.  
  36. // 'keyup' 이벤트 리스너 함수
  37. function handleKeyUp(event) {
  38. pressedKeys.delete(event.key);
  39. }
  40.  
  41. // 이벤트 리스너 등록
  42. document.addEventListener('keydown', handleKeyDown);
  43. document.addEventListener('keyup', handleKeyUp);
  44.  
  45. // 이벤트 리스너 제거 함수 반환
  46. return () => {
  47. document.removeEventListener('keydown', handleKeyDown);
  48. document.removeEventListener('keyup', handleKeyUp);
  49. };
  50. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址