Next: , Previous: Input Modes, Up: Terminal Input   [Contents][Index]


37.8.2 ÆþÎÏ¥¤¥Ù¥ó¥È¤ÎÊÑ´¹

ËÜÀá¤Ç¤Ï¡¢ÆþÎÏ¥¤¥Ù¥ó¥È¤ò¥­¡¼Îó¤Î°ìÉô¤Ë¤Ê¤ë¤Þ¤¨¤ËÊ̤ΠÆþÎÏ¥¤¥Ù¥ó¥È¤ËÊÑ´¹¤¹¤ëµ¡Ç½¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤Þ¤¹¡£ ¤³¤ì¤é¤Îµ¡Ç½¤Ï¡¢¤³¤³¤Ë½Ò¤Ù¤ë½ç¤Ë³Æ¥¤¥Ù¥ó¥È¤ËŬÍѤµ¤ì¤Þ¤¹¡£ ¤Ä¤Þ¤ê¡¢³Æ¥¤¥Ù¥ó¥È¤Ï¤Þ¤ºextra-keyboard-modifiers¤Ë½¾¤Ã¤Æ½¤Àµ¤µ¤ì¡¢ ¤Ä¤®¤Ë¡ÊŬÀڤʤé¤Ð¡Ëkeyboard-translate-table¤ò²ð¤·¤ÆÊÑ´¹¤µ¤ì¡¢ ºÇ¸å¤Ë»ØÄꤵ¤ì¤Æ¤¤¤ë¥­¡¼¥Ü¡¼¥É¥³¡¼¥Ç¥£¥ó¥°¥·¥¹¥Æ¥à¤ÇÉü¹æ²½¤µ¤ì¤Þ¤¹¡£ ¥­¡¼Îó¤Î°ìÉô¤È¤·¤ÆÆÉ¤ß¼è¤é¤ì¤ë¥¤¥Ù¥ó¥È¤Ç¤¢¤ë¤È¡¢ ÆÉ¤ß¼è¤é¤ì¤ë¥­¡¼Îó¤ËÄɲ䵤졢¤½¤ì¤ò´Þ¤àÉôʬ¥­¡¼Îó¤ò ¤Þ¤ºfunction-key-map¤Ç¸¡ºº¤·¤Æ¤«¤é¡¢ ¤Ä¤®¤Ëkey-translation-map¤Ç¸¡ºº¤·¤Þ¤¹¡£

Variable: extra-keyboard-modifiers

¤³¤ÎÊÑ¿ô¤Ï¡¢Lisp¥×¥í¥°¥é¥à¤¬¥­¡¼¥Ü¡¼¥É¾å¤Î ½¤¾þ¥­¡¼¤ò¡Ø²¡¤¹¡Ù¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£

1

SHIFT¥­¡¼¡£

2

LOCK¥­¡¼¡£

4

CTL¥­¡¼¡£

8

META¥­¡¼¡£

¥æ¡¼¥¶¡¼¤¬¥­¡¼¥Ü¡¼¥É¤Î¥­¡¼¤òÂǤĤ¿¤Ó¤Ë¡¢ ¥Ó¥Ã¥È¥Þ¥¹¥¯¤Ç»ØÄꤷ¤¿½¤¾þ¥­¡¼¤¬²¡¤·²¼¤²¤é¤ì¤Æ¤¤¤ë¤«¤Î¤è¤¦¤Ë ¥­¡¼¤ò½¤Àµ¤¹¤ë¡£

¥¦¥£¥ó¥É¥¦¥·¥¹¥Æ¥à¤ò»È¤Ã¤Æ¤¤¤ë¤È¤­¤Ë¤Ï¡¢ ¥×¥í¥°¥é¥à¤ÏǤ°Õ¤Î½¤¾þ¥­¡¼¤ò¡Ø²¡¤¹¡Ù¤³¤È¤¬¤Ç¤­¤ë¡£ ¤µ¤â¤Ê¤±¤ì¤Ð¡¢CTL¤ÈMETA¤Î¥­¡¼¤Î¤ß¤ò ²¾ÁÛŪ¤Ë²¡¤¹¤³¤È¤¬¤Ç¤­¤ë¡£

Variable: keyboard-translate-table

¤³¤ÎÊÑ¿ô¤Ï¡¢¥­¡¼¥Ü¡¼¥Éʸ»ú¤ÎÊÑ´¹É½¤Ç¤¢¤ë¡£ ¤³¤ì¤Ë¤è¤ê¡¢¥³¥Þ¥ó¥É¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÊѹ¹¤»¤º¤Ë¡¢ ¥­¡¼¥Ü¡¼¥É¤Î¥­¡¼ÇÛÃÖ¤òÊѹ¹¤Ç¤­¤ë¡£ ¤½¤ÎÃͤÏÉáÄ̤Ïʸ»ú¥Æ¡¼¥Ö¥ë¤Ç¤¢¤ë¤«¡¢¤¢¤ë¤¤¤Ï¡¢nil¤Ç¤¢¤ë¡£

keyboard-translate-table¤¬Ê¸»ú¥Æ¡¼¥Ö¥ë¤Ç¤¢¤ë¤È¡¢ ¥­¡¼¥Ü¡¼¥É¤«¤éÆÉ¤ß¼è¤Ã¤¿³ÆÊ¸»ú¤ò¤³¤Îʸ»ú¥Æ¡¼¥Ö¥ë¤Çõ¤¹¡£ ¤ß¤Ä¤±¤¿Ãͤ¬nil°Ê³°¤Ç¤¢¤ë¤È¡¢ ¼ÂºÝ¤ÎÆþÎÏʸ»ú¤Î¤«¤ï¤ê¤Ë¤½¤ÎÃͤò»È¤¦¡£

¤Ä¤®¤ÎÎã¤Ç¤Ï¡¢keyboard-translate-table¤Ëʸ»ú¥Æ¡¼¥Ö¥ë¤òÀßÄꤹ¤ë¡£ ¤½¤·¤Æ¡¢Ê¸»úC-s¤ÈC-\¡¢C-q¤ÈC-^¤òÆþ¤ì´¹¤¨¤ë¡£ ¤³¤ì°Ê¹ß¡¢C-\¤òÂǤĤÈC-s¤òÂǤ俸ú²Ì¤¬¤¢¤ê¡¢ ¤½¤ÎµÕ¤â¤½¤¦¤Ç¤¢¤ë¡£ ¡Ê¤³¤ÎÏÃÂê¤Ë´Ø¤·¤Æ¤Ï¾Ü¤·¤¯¤Ï¡¢see Flow Control¡£¡Ë

(defun evade-flow-control ()
  "Replace C-s with C-\ and C-q with C-^."
  (interactive)
  (setq keyboard-translate-table
        (make-char-table 'keyboard-translate-table nil))
  ;; C-s¤ÈC-\¤òÆþ¤ì´¹¤¨¤ë
  (aset keyboard-translate-table ?\034 ?\^s)
  (aset keyboard-translate-table ?\^s ?\034)
  ;; C-q¤ÈC-^¤òÆþ¤ì´¹¤¨¤ë
  (aset keyboard-translate-table ?\036 ?\^q)
  (aset keyboard-translate-table ?\^q ?\036))

¤³¤ÎÊÑ´¹¤Ï¡¢Ã¼Ëö¤«¤éÆÉ¤ß¼è¤Ã¤¿Ê¸»ú¤ËºÇ½é¤Ë¹Ô¤ï¤ì¤ëÊÑ´¹¤Ç¤¢¤ë¡£ recent-keys¤Î¤è¤¦¤Êµ­Ï¿µ¡Ç½¤ä¥É¥ê¥Ö¥ë¥Õ¥¡¥¤¥ë¤Ï¡¢ ÊÑ´¹¸å¤Îʸ»ú¤òµ­Ï¿¤¹¤ë¡£

Function: keyboard-translate from to

¤³¤Î´Ø¿ô¤Ï¡¢Ê¸»ú¥³¡¼¥Éfrom¤òʸ»ú¥³¡¼¥Éto¤ËÊÑ´¹¤¹¤ë¤è¤¦¤Ë keyboard-translate-table¤òÊѹ¹¤¹¤ë¡£ ɬÍפʤé¤Ð¥­¡¼¥Ü¡¼¥ÉÊÑ´¹É½¤òºîÀ®¤¹¤ë¡£

»Ä¤ê¤ÎÊÑ´¹µ¡Ç½¤Ï¡¢ÆÉ¤ß¼è¤Ã¤¿¥­¡¼Îó¤ÎÉôʬÎó¤òÊÑ´¹¤·¤Þ¤¹¡£ ¤½¤ì¤é¤Ïread-key-sequence¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤Æ¡¢ read-event¤ÇÆÉ¤àÆþÎϤˤϸú²Ì¤Ï¤¢¤ê¤Þ¤»¤ó¡£

Variable: function-key-map

¤³¤ÎÊÑ¿ô¤Ï¡¢ÉáÄ̤Îʸ»úüËö¾å¤Î¥Õ¥¡¥ó¥¯¥·¥ç¥ó¥­¡¼¤¬ Á÷½Ð¤¹¤ëʸ»ú¤ÎÎó¤òµ­½Ò¤·¤¿¥­¡¼¥Þ¥Ã¥×¤òÊÝ»ý¤¹¤ë¡£ ¤³¤Î¥­¡¼¥Þ¥Ã¥×¤Ï¾¤Î¥­¡¼¥Þ¥Ã¥×¤ÈƱ¤¸¹½Â¤¤Ç¤¢¤ë¤¬¡¢»È¤¤Êý¤¬°Û¤Ê¤ë¡£ ¥­¡¼Îó¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ç¤Ï¤Ê¤¯¡¢ ÆÉ¤ß¼è¤ê¤Ä¤Ä¤¢¤ë¥­¡¼Îó¤òÊÑ´¹¤¹¤ëÊýË¡¤ò»ØÄꤹ¤ë¡£

function-key-map¤¬¥­¡¼Îók¤ò ¥Ù¥¯¥È¥ëv¤Ë¡Ø¥Ð¥¤¥ó¥É¡Ù¤¹¤ë¤È¡¢ ¥­¡¼Îó¤Î¤É¤³¤Ëk¤¬¸½¤ì¤Æ¤â¡¢ v¤Î¥¤¥Ù¥ó¥È¤ÇÃÖ¤­´¹¤¨¤ë¡£

¤¿¤È¤¨¤Ð¡¢Ã¼ËöVT100¤Ï¡¢¥­¡¼¥Ñ¥Ã¥É¤Î¥­¡¼PF1¤ò²¡¤¹¤È ESC O P¤òÁ÷½Ð¤¹¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢Emacs¤Ç¤Ï¤³¤ÎÎó¤ò1¤Ä¤Î¥¤¥Ù¥ó¥Èpf1¤ËÊÑ´¹¤·¤¿¤¤¡£ VT100¤ò»È¤Ã¤Æ¤¤¤ë¤È¤­¤Ëfunction-key-map¤Ë¤ª¤¤¤Æ ESC O P¤ò[pf1]¤Ë¡Ø¥Ð¥¤¥ó¥É¡Ù¤¹¤ì¤Ð¡¢ ¤³¤ì¤ò¹Ô¤¨¤ë¡£

¤Ä¤Þ¤ê¡¢C-c PF1¤òÂÇ¤Ä¤È Ê¸»ú¤ÎÎóC-c ESC O P¤¬Á÷½Ð¤µ¤ì¤ë¡£ ¤Î¤Á¤Ë´Ø¿ôread-key-sequence¤¬¤³¤ì¤òC-c PF1¤ËÌᤷ¡¢ ¥Ù¥¯¥È¥ë[?\C-c pf1]¤òÊÖ¤¹¡£

¥Þ¥¤¥Ê¥â¡¼¥É¡¿¥í¡¼¥«¥ë¡¿¥°¥í¡¼¥Ð¥ë¤Î¥­¡¼¥Þ¥Ã¥×¤ËÌ·½â¤¹¤ë¤è¤¦¤Ê function-key-mapÆâ¤Î¹àÌܤÏ̵»ë¤µ¤ì¤ë¡£ ¤³¤Î°Õ¿Þ¤Ï¡¢¥Õ¥¡¥ó¥¯¥·¥ç¥ó¥­¡¼¤¬Á÷½Ð¤¹¤ëʸ»ú¤ÎÎó¤Ë¤Ï ¤½¤ìÆÈ¼«¤Î¥­¡¼¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬¤¢¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¯¡¢ ¤â¤·¤¢¤Ã¤¿¤È¤·¤Æ¤â¡¢¤â¤È¤ÎÄêµÁ¤òÍ¥À褹¤ë¤³¤È¤Ç¤¢¤ë¡£

function-key-map¤ÎÃͤϡ¢ üËö¤Îterminfo¤ätermcap¤Î¾ðÊó¤Ë½¾¤Ã¤Æ¼«Æ°Åª¤ËÉáÄ̤ÏÀßÄꤵ¤ì¤ë¤¬¡¢ üËö¸ÇÍ­¤ÎLisp¥Õ¥¡¥¤¥ë¤Î½õ¤±¤¬É¬Íפʾì¹ç¤â¤¢¤ë¡£ Emacs¤Ë¤Ï¡¢°ìÈÌŪ¤Ê¿¤¯¤ÎüËö¸þ¤±¤ÎüËö¸ÇÍ­¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¡£ ¤½¤ì¤é¤Î¼çÌÜŪ¤Ï¡¢terminfo¤ätermcap¤«¤é¿äÄê¤Ç¤­¤Ê¤¤¤â¤Î¤ò function-key-map¤ËÄêµÁ¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£ see Terminal-Specific¡£

Variable: key-translation-map

¤³¤ÎÊÑ¿ô¤Ï¡¢function-key-map¤ÈƱÍÍ¤Ë ÆþÎÏ¥¤¥Ù¥ó¥È¤òÊÌ¤ÎÆþÎÏ¥¤¥Ù¥ó¥È¤ØÊÑ´¹¤¹¤ë¤¿¤á¤ËÍѤ¤¤ëÊ̤Υ­¡¼¥Þ¥Ã¥×¤Ç¤¢¤ë¡£ function-key-map¤È¤Ï2¤Ä¤Î°ÕÌ£¤Ç°Û¤Ê¤ë¡£

key-translation-map¤Î°Õ¿Þ¤Ï¡¢ self-insert-command¤ËÉáÄ̤ϥХ¤¥ó¥É¤µ¤ì¤ëÄ̾ï¤Îʸ»ú¤ò´Þ¤á¤Æ ¥æ¡¼¥¶¡¼¸þ¤±¤Ëʸ»ú½¸¹ç¤òÊ̤Îʸ»ú½¸¹ç¤Ë ÂбþÉÕ¤±¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£

¥­¡¼¤Î¡ØÊÑ´¹¤È¤·¤Æ¡Ù¥­¡¼Îó¤Î¤«¤ï¤ê¤Ë´Ø¿ô¤òÍѤ¤¤ë¤È¡¢ function-key-map¤äkey-translation-map¤Ï ñ¤Ê¤ëÇÛÃÖÂØ¤¨°Ê¾å¤Î¤³¤È¤Ë»È¤¨¤Þ¤¹¡£ ¤½¤Î´Ø¿ô¤ÇÅö³º¥­¡¼¤ÎÊÑ´¹¤ò·×»»¤¹¤ë¤Î¤Ç¤¹¡£

¥­¡¼ÊÑ´¹´Ø¿ô¤Ï1¤Ä¤Î°ú¿ô¤ò¼õ¤±¼è¤ê¤Þ¤¹¡£ ¤½¤Î°ú¿ô¤Ï¡¢read-key-sequence¤Ç»ØÄꤵ¤ì¤¿¥×¥í¥ó¥×¥È¤«¡¢ ¥¨¥Ç¥£¥¿¥³¥Þ¥ó¥É¥ë¡¼¥×¤¬¥­¡¼Îó¤òÆÉ¤ß¼è¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ïnil¤Ç¤¹¡£ ¿¤¯¤Î¾ì¹ç¡¢¥×¥í¥ó¥×¥È¤ÎÃͤÏ̵»ë¤Ç¤­¤Þ¤¹¡£

´Ø¿ô¼«¿È¤¬ÆþÎϤòÆÉ¤à¤È¤­¤Ë¤Ï¡¢ ¸å³¤Î¥¤¥Ù¥ó¥È¤òÊѹ¹¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢¸å³¤Îʸ»ú¤ò¥Ï¥¤¥Ñ¡¼Ê¸»ú¤Ë¤¹¤ëC-c h¤ÎÄêµÁ¤Ï ¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

(defun hyperify (prompt)
  (let ((e (read-event)))
    (vector (if (numberp e)
                (logior (lsh 1 24) e)
              (if (memq 'hyper (event-modifiers e))
                  e
                (add-event-modifier "H-" e))))))

(defun add-event-modifier (string e)
  (let ((symbol (if (symbolp e) e (car e))))
    (setq symbol (intern (concat string
                                 (symbol-name symbol))))
    (if (symbolp e)
        symbol
      (cons symbol (cdr e)))))

(define-key function-key-map "\C-ch" 'hyperify)

set-keyboard-coding-system¤òÍѤ¤¤¿ ¥­¡¼¥Ü¡¼¥Éʸ»ú½¸¹ç¤ÎÉü¹æ²½¤òÍ­¸ú¤Ë¤·¤Æ¤¤¤ë¤È¤­¤Ë¤Ï¡¢ ¾å¤Ë½Ò¤Ù¤¿ÊÑ´¹¤ò½ª¤¨¤Æ¤«¤éÉü¹æ²½¤ò¹Ô¤¤¤Þ¤¹¡£ See Specifying Coding Systems¡£ Emacs¤Î¾­Íè¤ÎÈǤǤϡ¢Â¾¤ÎÊÑ´¹¤Î¤Þ¤¨¤ËÉü¹æ²½¤ò¹Ô¤¦¤Ç¤·¤ç¤¦¡£


Next: , Previous: Input Modes, Up: Terminal Input   [Contents][Index]