ª`­µ¿é¤Jªk¼Ò²Õ: bimsphone

1. ²¤¶:

   ¥»¼Ò²Õ¬O±M¥Îªºª`­µ¿é¤Jªk¼Ò²Õ¡Aª½±µ±Ä¥Î¤F libtabe ­pµe

	http://libtabe.sourceforge.net/

   ©Ò¶}µoªº libtabe °µ¬°ª`­µ²q¦r¤ÞÀº¡C¥¦¾Ö¦³Ãþ¦üª© xcin ªºµü­µ¿é¤J¥\¯à¡A
   ¦ý¨ã¦³§ó·Ç½Tªº²q¦r¯à¤O¡A¬Û«H¹ï©óª`­µ¿é¤Jªkªº¨Ï¥ÎªÌ¦Ó¨¥·|¬O­Ó«Ü¦³¥Îªº¿é¤J
   ¤u¨ã¡C

   ½Ðª`·N¥»¿é¤Jªk¼Ò²Õ¤£¦P©ó gen_inp ¼Ò²Õ¡A¥¦¤£¨Ï¥Î .cin ©Î .tab §@¬°¸ê®ÆÀÉ¡A
   ¦Ó¬O¨Ï¥Î tsi.db »P yin.db §@¬°¨ä¸ê®ÆÀÉ¡C

   ¥Ø«e¥»¼Ò²Õ¥i¤ä´©¨âºØ¿é¤Jªk: ¤@¬° bimsphone, §Y bims ª`­µ¿é¤Jªk¡A±z¥i¥H¶i
   ¤@¨B¿ï¾Ü¬O§_¶}±Ò¦Û°Ê¿ï¦r¥\¯à¡A­Y¶}±Ò¡A«h¥¦¦b¦h­«¦r¿ï¾Ü®É¡A´N¦³¦Û°Ê¿ï¦rªº
   ¯à¤O¡AÃþ¦ü¹L¥hªºµü­µ¿é¤Jªk©Î¦ÛµM¿é¤Jªk¡C­YÃö³¬¡A«h¬°¤@¯ëªºª`­µ¿é¤Jªk¡A¦ý
   »P gen_inp ªº phone.cin ¤£¦Pªº¬O¡A¥¦¥i¥HÅý±z¿ï¾Ü¤£¦PªºÁä½L¹ï¬M¡A¦P®É¹ï©ó
   ª`­µªº¿é¤J²ßºD¦³¸û¦nªº¸àÄÀ¡C

   ¥t¤@ºØ¿é¤Jªk¬° bimspinyin, §Y bims «÷­µ¿é¤Jªk¡C»P gen_inp ªº pinyin.cin
   ¤£¦Pªº¬O¡A³o¸Ì¦h¤F¦h­«¦r¦Û°Ê¿ï¦rªº¥\¯à¡A¥i¥HÅý«÷­µ¿é¤J§ó«K±¶§Ö³t¡C

   ¥Ñ©ó¥»¼Ò²Õªº¤ÞÀº: libtabe, ¨ä¦b³]­p¤§ªì¬O¥H¡u­µ¡v¾É¦Vªº¡A¦Ó¥B¨ä¸ê®ÆÀɪº
   ¤º®e¤S¯S§O¥H¥xÆW¦a°Ïªº°ê»yµo­µ¬°¼Ð·Ç¡A¬G¨Æ¹ê¤W¥¦¥i¯à¥u¯S§O¾A¥Î©ó¥xÆW¦a°Ï
   ªº¨Ï¥ÎªÌ¡C¹ï©ó¨ä¥L¦a°Ïªº¨Ï¥ÎªÌ¡A¥Ø«e¨S¦³¤ä´©¡A¤]³\¥¼¨Ó·|¦³©Ò§ï¶i¡C


2. ³]©w:

   ±z¥u­n¦b xcin ªº rcfile ¤¤¥[¤J¦p¤U´X¦æ§Y¥i:

===========================================================================
(define bimsphone
        '((MODULE       bimsphone)
          (SETKEY	6)))
===========================================================================

   ¨ä¤¤:

   a. "define" ¤§«á "bimsphone" ¬O¿é¤Jªk¦W¡C¥»¼Ò²Õ¥u¯à±µ¨ü "bimsphone" ³o­Ó
      ¿é¤Jªk¦W¡C

   b. SETKEY: «ü©w¥»¿é¤Jªkªº±Ò°ÊÁä¡C¤W¨Ò§Y¬°: ctrl+alt+6 ¡C

   c. MODULE: «ü©w¿é¤Jªk¼Ò²Õ¦W¡C¦b¦¹¤@©w­n¶ñ¤J "bimsphone" ¡C


   °£¦¹¤§¥~¡A±z¥i¥H¶·³]©w¥H¤U´X­Ó¿ï¶µ:

   d. N_SELECTION_KEY: ³]©w¿ï«hÁä­Ó¼Æ: ¨ä¼Æ¦r½d³ò¥²¶·¬O 5 ¨ì 10¡A¹w³]¬O 9¡C

   e. SELECTION_KEYS: ³]©w¿ï¾ÜÁä¦Cªí:
	0  ¨Ï¥Î 1234567890 ¬°¿ï¾ÜÁä
	1  ¨Ï¥Î asdfghjkl; ¬°¿ï¾ÜÁä
      ¹w³]¬O 0¡C

   f. PAGE_KEYS: ³]©w¦h­«¦r (µü) ¿ï¾Ü®Éªº´«­¶Áä:
	1. ¨Ï¥Î < Á䩹«e±²­¶¡A > Á䩹«á±²­¶¡C
	2. ¨Ï¥Î , Á䩹«e±²­¶¡A . Á䩹«á±²­¶¡C
	4. ¨Ï¥Î¥ª¤è¦VÁ䩹«e±²­¶¡A¥k¤è¦VÁ䩹«á±²­¶¡C
      ­Y±z·Q­n½Æ¿ï¡A¥u­n±N¤W­zªº¼Æ­È¥ôùزզX¬Û¥[§Y¥i¡C­Y±z³]¬° 0 ®É¡A«h¥u
      ¦³ space Áä¥i¥H©¹«á±²­¶¡C¹w³]¬° 4¡C

   g. QPHRASE_MODE: ³]©w modifier escape mode, ¸Ô¨£ im_comm ¤@¤åªº»¡©ú¡C


   ©³¤U¨â­Ó¬O bimsphone ¿é¤Jªkªº±MÄݳ]©w:

   h. AUTO_SELECTION: ³]©w¬O§_±Ò°Ê¦Û°Ê¿ï¦r¼Ò¦¡¡C

   i. KEYMAP: ³]©wÁä½L¹ï¬M:
	0  ¬°¹s³üÁä½L
	1  ¬°­Ê¤ÑÁä½L
	2  ¬°­Ê¤Ñ 26 Áä½L
	3  ¬°³\¤óÁä½L 
      ¹w³]¬O¹s³üÁä½L¡C


   ©³¤U³o­Ó¬O bimspinyin ¿é¤JªkªºÂàÄݳ]©w (¦b¦¹¿é¤Jªk¤¤¡A¦Û°Ê¿ï¦r¼Ò¦¡¥Ã»·¬O
   ¶}±Òªº¡A¦Ó¥BÁä½L¹ï¬M¥Ã»·¬O¹s³üÁä½L¡A¨ä¤¤Áä½L¹ï¬M¥u¦³¦b¼Ò²Õ¤º³¡¹B§@®É¤~·|
   °Ñ¦Ò¨ì):

   j. PINPHO_MAP: «ü©w«÷­µ½X»Pª`­µ½Xªí·Óªí¡C


   ©³¤Uªº³]©w¬O·í AUTO_SELECTION ¶}±Ò®É¤~·|¦³§@¥Î:

   k. TSI_FNAME: µü®w¸ê®ÆÀÉÀɦW¡A±z¥i¥Hª½±µ³]¸ÓÀɮתºµ´¹ï¸ô®|¡C­Y±z¥u¦³«ü©w
	ÀɦW¡A«h xcin ·|¨ì $XCIN_DIR ©³¤U·j´M¡C

   l. YIN_FNAME: ­µ®w¸ê®ÆÀÉÀɦW¡A±z¥i¥Hª½±µ³]¸ÓÀɮתºµ´¹ï¸ô®|¡C­Y±z¥u¦³«ü©w
	ÀɦW¡A«h xcin ·|¨ì $XCIN_DIR ©³¤U·j´M¡C

   m. SPACE_SELECTION: ³]©w¨Ï¥ÎªÅ¥ÕÁ䪽±µ¿ï¦r¡A³o®ÉªÅ¥ÕÁä±N¤£¯à¥Î¨Ó¤W¦r¡A­n
	¤W¦r®É­n¨Ï¥Î return Áä¡C¹w³]¬° NO¡C

   n. PHRASE_SELECTION: ¬O§_¶}±Ò¦h­«¿ïµü¥\¯à¡C­Y³]¬° YES ®É¡A«h±z²Ä¤@¦¸«ö
	Up Áä®É¡A­Y¦³µü¥i¿ï¾Ü¿ïµü¡A§_«h¿ï¦r¡C­Y¦³µü¥i¿ï¡A¥B¥Ø«e¬O¦b¿ïµü¦C
	ªí®É¡A¦A«ö¤@¦¸ Up Áä¥i¥H¤Á´«¨ì¿ï¦r¦Cªí¡A¦A«ö¤@¦¸ Up Áä¥i¥H¤Á´«¨ì¿ï
	µü¦Cªí¡A¦p¦¹´`Àô¡C­Y³]¬° NO ®É¡A«h«ö Up Áä¥u¯à¶i¤J¿ï¦r¦Cªí¡C¨ä¹w³]
	­È¬° YES¡C

   o. N_SELECTION_PHR: ³]©w¿ïµüªº­Ó¼Æ: ¨ä¤W­­¤£±o¶W¹L NSELKEY ªº­È¡C


   ©³¤U³o­Ó¥u¦³¦b AUTO_SELECTION Ãö³¬®É¤~¦³®Ä:

   p. AUTO_UPCHAR: ¬O§_°_°Ê¦Û°Ê¤W¦r¥\¯à¡A¹w³]­È¬° NO¡C¦¹¿ï¶µ¥u¦³¦b 
	AUTO_SELECTION Ãö³¬®É¤~¦³®Ä¡C


3. ¥þ°ì³]©w:

   ¥Ñ©ó¥»¼Ò²Õªº³]©w¶µ¥Ø¬Û·í¦h¡A¦]¦¹·í±z»Ý­n¬°³\¦h¿é¤Jªk¶i¦æ³]©w®É¡A¥i¯à·|
   «Ü¤£¤è«K¡C¦AªÌ¡A«Ü¦h¤H¦b¿é¤Jªkªº¨Ï¥Î²ßºD¦h¥b¬O«Ü©T©wªº¡A¬G¦U¿é¤Jªk©Ò»Ý
   ªº³]©w¥i¯à¤j³¡¤À³£¬Û¦P¡A¥u¦³¤Ö³¡¤À¤£¤@¼Ë¡C¦b³o±¡ªp¤U¡A­Y¨Ï¥Î¿é¤Jªkªº¥þ
   °ì³]©w¡A«h¥i¥H¤j¤j´î¤Æ xcinrc ªº¤º®e¡C

   ¥»¼Ò²Õªº¥þ°ì³]©w¤è¦¡¦p¤U:

===========================================================================
(define bimsphone_default
        '((cmd1         value1)
          (....         ......)))
===========================================================================

   ¤]´N¬O»¡¡A¥u­n±N¤WÀYªº inpname (¿é¤Jªk¦W) §ï¦¨ bimsphone_default §Y¥i¡A
   ¨ä¾lªº³]©w¶µ»P¤WÀY©Ò¦Cªº§¹¥þ¬Û¦P¡C³q±`§Ú­Ì·|¦b³o¥þ°ì³]©w¤¤³]¦n©Ò¦³¶µ¥Ø¡A
   °µ¬°©Ò¦³±Ä¥Î bimsphone ¼Ò²Õªº¿é¤Jªk¹w³]­È¡A¦Ó¦U§Oªº¿é¤Jªk¥u­n°w¹ï»P³o¸Ì
   ªº¹w³]­È¤£¦Pªº³¡¤À¶i¦æ³]©w§Y¥i¡C


4. ½d¨Ò:

   ­º¥ý§Ú­Ì¥ý°µ¤@­Ó¿é¤Jªkªº¥þ°ì³]©w¡C³o­Ó¥þ°ì³]©w»P locale Àô¹ÒµLÃö¡A¬G¹ï©ó
   ¥ô¦ó locale ³£¥i¾A¥Î:

(define bimsphone_default
        '((N_SELECTION_KEY      9)
          (SELECTION_KEYS       0)      ; 0: "1234567890", 1: "asdfgjkl;"
          (PAGE_KEYS            5)      ; 1:<> 2:,. 4:(Rt)(Lt)
          (QPHRASE_MODE         1)      ; 1: shift, 2: ctrl, 4: alt
        ;
        ; This is only valid for "bimsphone*" IM name.
          (AUTO_SELECTION       YES)
          (KEYMAP               0)      ; 0: zozy, 1: et, 2: et26, 3: hsu
        ;
        ; This is only valid for "bimspinyin*" IM name.
          (PINPHO_MAP           "bims_pinyin")
        ;
        ; The following has effect only when AUTO_SELECTION is YES
          (TSI_FNAME            "tsi.db")
          (YIN_FNAME            "yin.db")
          (SPACE_SELECTION      NO)
          (PHRASE_SELECTION     YES)
          (N_SELECTION_PHR      4)
        ;
        ; The following has effect only when AUTO_SELECTION is NO
          (AUTO_UPCHAR          YES)))

±µ¤U¨Ó¬O¦U¿é¤Jªkªº²Ó³¡³]©w¡C¹ï©ó¨ã³Æ¦Û°Ê¿ï¦rªºª`­µ¿é¤Jªk¡A«h¥H¤Wªº¹w³]¿ï
¶µ¤£»ÝÃB¥~­×§ï¡A§Y¥i¨Ï¥Î:

(define bimsphone@big5
        '((SETKEY               6)
          (MODULE               "bimsphone")))

¦pªG­nÃö±¼¦Û°Ê¿ï¦r¥\¯à¡A¦Ó¥B­n»P bimsphone ¿é¤Jªk¦@¦sªº¸Ü¡A«h±z¥²¶·¨Ï¥Î¥t
¤@­Ó¿é¤Jªk¦W¡A¦Ó¥B¥²¶·­n¥H bimsphone ¬°¶}ÀY¡A¨Ò¦p:

(define bimsphoneS@big5
        '((SETKEY               7)
	  (AUTO_SELECTION	"YES")
          (MODULE               "bimsphone")))

¦pªG­n¨Ï¥Î«÷­µ¿é¤J¡A«h¿é¤Jªk¦W¥²¶·­n¥H bimspinyin ¬°¶}ÀY:

(define bimspinyin@big5
        '((SETKEY               5)
          (MODULE               "bimsphone")))


5. ¨Ï¥Î¤è¦¡:

   ·í±z¤Á´«¦Ü bimsphone ¶i¦æª`­µ¿é¤J®É¡A±z©Ò¿é¤Jªº¤¤¤å¦r³£·|¼È¦s¦b xcin ªº
   µøµ¡¤¤¡Aª½¨ìµøµ¡¤wº¡¡A©ÎªÌ±z«ö¤U¤W¦rÁä (¦p space ©Î return Áä) ®É¦r¤~·|
   °e©¹ XIM client µøµ¡¡C­Y±z¦b¿é¤J¤¤³~¡A bimsphone ²q¿ù¦r®É¡A±z¥i¥H«ö¥ª¥k
   Áä¨Ï´å¼Ð¦b xcin µøµ¡¤¤²¾°Ê¡A«Ý´å¼Ð²¾¨ì¿ù»~ªº¦r¤W®É¡A«ö¡u¤W¡vÁä§Y¥i¦C¥X
   ¦P­µ¦r (µü) ªº¿ï³æ¦Cªí¡A³o®É±z¥i¥H¥Î¿ï¦r«¬¿ï¾Ü¥¿½Tªº¦r¡A©Î¥Î < > , . µ¥
   Á䩹«e©Î©¹«á½­¶¡C

   ­Y±z¦b¿é¤J¤¤³~Á{®É»Ý­n¿é¤J­^¤å®É¡A±z¥i¥H«ö¤U CapsLock Áä¡A«h³o®É±zªº¿é
   ¤J³£·|ª½±µ¥H­^¤å¿é¥X¡C½Ðª`·N¦pªG¦¹®É¦b xcin µøµ¡¤¤¤´¦³¤¤¤å¦r®É¡A¿é¥Xªº
   ­^¤å·|³s¦P xcin µøµ¡ªº¤¤¤å¦r¤@°_°e¥X¡C

   ¥Ñ©ó bimsphone ¾Ö¦³©¹«e­×¥¿ªº¥\¯à¡A¦]¦¹¦pªG±z¥´¦r¤¤³~µo²{ bimsphone ²q¿ù
   ¦r®É¡A¤£¥²«æµÛ¦^ÀY§ï¦r¡A±z¥i¥H«ùÄò¦A¥´¤@¬q¦r¡A bimsphone ¥i¥H®Ú¾Ú±zªº»y
   ·N¾A«×¦a©¹¦^­×¥¿¿ù»~¡Aª½¨ì±z¥´§¹¤@¬q¥y¤l«á (¥B³o¬q¥y¤l¤´¯d¦b xcin µøµ¡®É)¡A
   ­Yµo²{ÁÙ¬O¦³¿ù¦r¡A¦A¥Î¥ª¥kÁä¦^¥h­×§ï¡A¦p¦¹¥i¥H¥[§Ö¥´¦rªº³t«×¡C

   ­Y xcin µøµ¡¤¤¦³¤¤¤å¦r®É¡A±zªº¦V¤èÁä¥u¯à¥Î¨Ó²¾°Ê xcin µøµ¡ªº´å¼Ð¡A©ÎªÌ
   ¶i¤J¦h°Ê¿ï¦r (µü) ªº¼Ò¦¡¡A¦Ó¤£¯à¥Î¨Ó²¾°Ê XIM client ¤Wªº´å¼Ð¡C­Y±z§Æ±æ
   ²¾°Ê XIM client ¤Wªº´å¼Ð¡A±z¥²¶·¥ý±N xcin µøµ¡¤¤ªº¦r°e¥X©Î²M°£¡A©ÎªÌ¡A
   ±z¤]¥i¥H«ö¤U CapsLock Áä¡A³o®É¤è¦VÁä´N¥i¥H¥Î¨Ó²¾°Ê XIM client ªº´å¼Ð¡A
   ¦ý¤£¼vÅT xcin µøµ¡¤¤ªº¦r (¦r¤]¤£·|°e¥X¡A°£«D±z³o®É¥´¤J­^¤å¦r)¡C


T.H.Hsieh