ChatGPT Enter Fix (GPT4)

This Chrome/Safari extension addresses the issue where ChatGPT sends text even when the Enter key is pressed during Japanese conversion.

  1. // ==UserScript==
  2. // @name ChatGPT Enter Fix (GPT4)
  3. // @name:ja ChatGPT Enter Fix (GPT4)
  4. // @namespace http://tampermonkey.net/
  5. // @description This Chrome/Safari extension addresses the issue where ChatGPT sends text even when the Enter key is pressed during Japanese conversion.
  6. // @description:ja ChatGPTにおいて日本語IMEで変換中にEnterを押した時に送信されてしまうの問題を阻止します。 Safariにも対応。
  7. // @version 2.0
  8. // @author satosh1suzuk1, d-engine
  9. // @match https://chat.openai.com/chat
  10. // @match https://chat.openai.com/chat/*
  11. // ==/UserScript==
  12.  
  13. // wrap in anonymous scope to prevent confliction.
  14. (() => {
  15. const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
  16. window.addEventListener("load", ()=> {
  17. const tryInject = () => {
  18. const textarea = document.querySelector('textarea[tabindex="0"]');
  19. if (!textarea) {
  20. return;
  21. }
  22. if(textarea.dataset.isInjected === 'true'){
  23. return;
  24. }
  25. textarea.dataset.isInjected = 'true';
  26.  
  27. textarea.addEventListener(
  28. "keydown",
  29. (event) => {
  30. // SafariではisComposingが機能しない。 普通のEnterはkeyCodeが13に、IME確定のEnterは229になる
  31. if (
  32. (isSafari && event.keyCode === 229) ||
  33. (event.key === "Enter" && event.isComposing)
  34. ) {
  35. event.target.dataset.isComposing = 'true';
  36. event.stopPropagation();
  37. }
  38. },
  39. { capture: true }
  40. );
  41. textarea.addEventListener(
  42. "keyup",
  43. (event) => {
  44. if (event.key === "Enter" && event.target.dataset.isComposing === 'true') {
  45. event.stopPropagation();
  46. }
  47. },
  48. { capture: true }
  49. );
  50. }
  51. setInterval(tryInject, 1000);
  52. }, false);
  53. })();