Skip to content

Latest commit

 

History

History
430 lines (299 loc) · 86.9 KB

README.md

File metadata and controls

430 lines (299 loc) · 86.9 KB

README in English

kKg ကီးဘုတ် မိတ်ဆက် (Version 1)

ကျွန်တော်က မြန်မာစာလုံးတွေကို အရမ်းချစ်ပါတယ်၊ သို့သော် မြန်မာစာကို ရိုက်ဖို့အတွက် အဲဒီအချိန်တုန်းက ရှိနေတဲ့ မြန်မာစာကီးဘုတ်လက်ကွက်တွေကိုကြည့်ပြီး၊ လေ့ကျင့်ဖို့ အရမ်းကို အပျင်းကျခဲ့ပါတယ်။ ၂၀၀၄ ခုနှစ်လောက်ကပါ။ ကျွန်တော် ဂျပန်၊ တိုကျိုမှာရှိတဲ့ Waseda တက္ကသိုလ်မှာ မဟာဘွဲ့အတန်းတက်နေစဉ်၊ မြန်မာစာနဲ့ ပတ်သက်တဲ့ UI (User Interface) သုတေသနတွေကို စလုပ်ဖြစ်တော့ မြန်မာစာကို ကွန်ပြူတာသုံးပြီး ရိုက်ဖို့ လိုအပ်လာတဲ့ အခါ၊ kKg ကီးဘုတ်ကို စပြီးစဉ်းစားဖြစ်ခဲ့ပါတယ်။ ငါက QWERTY ကီးဘုတ်ကို သုံးပြီး အင်္ဂလိပ်လို ရိုက်တတ်နေတာပဲ၊ QWERTY ကီးဘုတ်အက္ခရာအစီအစဉ်အတိုင်း မြန်မာစာကိုကော mapping လုပ်လို့ မရနိုင်ဘူးလားလို့။ အဲဒါနဲ့ ဒီ kKg (ကခဂ) ကီးဘုတ်ကို လုပ်ဖြစ်သွားခဲ့ပါတယ်။

kKg ကီးဘုတ် ခလုပ်နေရာချပုံ (keyboard layout) က မြန်မာစာ စာလုံးတွေရဲ့ အသံထွက်ပေါ်ကို အဓိက အခြေခံထားပါတယ်။ အင်္ဂလိပ်ကီးဘုတ် ရိုက်နေကျသူများက အကျွမ်းတဝင် ရှိပြီးသားဖြစ်တဲ့ Shift ကီးနဲ့တွဲပြီး အင်္ဂလိပ်စာလုံး အသေး၊ အကြီး ပြောင်းတဲ့ပုံစံကိုလဲ အသုံးပြုထားပါတယ်။ အဲဒီ အချက် ၂ချက်အပေါ်ကို အခြေခံထားပြီးတော့

  • က ကို k ကီး၊ ခ ကို K ( shift + k ) ကီး။
  • ဂ ကို g ကီး၊ ဃ ကို G ( Shift + g ) ကီး။
  • စ ကို s ကီး၊ ဆ ကို S ( Shift + s ) ကီး။
  • ဇ ကို z ကီး၊ ဈ ကို Z ( Shift + z ) ကီး။
  • ဒ ကို d ကီး၊ ဓ ကို D ( Shift + d ) ကီး။
  • န ကို n ကီး၊ ဏ ကို N ( Shift + n ) ကီး။
  • ပ ကို p ကီး၊ ဖ ကို P ( Shift + p ) ကီး။
  • ဗ ကို B ( Shift + b )ကီး၊ ဘ ကို b ကီး။
  • မ ကို m ကီး။
  • ယ ကို ( Shift + y )၊ ရ ကို y ကီး။
  • လ ကို l ကီး၊ ဠ ကို ( Shift + l )ကီး မှာအသီးသီး နေရာချနိုင်ပါတယ်။

ဒါဆိုရင် အသုံးများတဲ့မြန်မာဗျည်းက ကုန်သလောက်ရှိသွားပါပြီ။ ဒါပေမဲ့ တချို့သော မြန်မာစာလုံးတွေက အသံထွက်ဆင်တူတဲ့ အတွက်ကြောင့် (ဥပမာ တ၊ ထ၊ သ လို ဗျည်းစာလုံး၊ ဒ၊ ဓ၊ ဋ၊ ဍ၊ ဎ၊ လို ဗျည်းတွေ) အင်္ဂလိပ်ကီးဘုတ်ရဲ့ ကီးတွေနဲ့က မလောက်ပါဘူး။ ထို့အပြင် မြန်မာ ဗျည်းစာလုံးအရေအတွက်က စုစုပေါင်း ၃၃လုံးရှိပြီး၊ အင်္ဂလိပ်စာလုံး စုစုပေါင်းအရေအတွက်က စုစုပေါင်း၂၆လုံး ဆိုတော့ မြန်မာဗျည်းစာလုံးအားလုံးကို အသံထွက်ပေါ်အခြေခံပြီး နေရာချလို့ မဖြစ်နိုင်ပါ။ ဒါ့ကြောင့် တချို့ မြန်မာဗျည်းတွေက အသံထွက်မတူတဲ့ အင်္ဂလိပ်ကီးမှာ နေရာချထားရတာမျိုး ရှိပါတယ်။ ဥပမာအနေနဲ့ အထက်မှာတင်ပြခဲ့တဲ့အတိုင်း နငယ်စာလုံး ကို n ကီးမှာ၊ ဏကြီးစာလုံးကို N ( Shift +n) မှာနေရာချထားသားပြီးဖြစ်နေလို့၊ ညဗျည်း (nya) ကို အင်္ဂလိပ်စာလုံး q ကီးမှာ နေရာချထားတဲ့ ကိစ္စမျိုးပါ။ သို့သော် ဖြစ်နိုင်သ၍ မှတ်ရလွယ်ကူအောင် နေရာချထားပါတယ်။ ဥပမာ။ ။
မြန်မာဗျည်း ည ကို q ကီးမှာ နေရာချထားသောကြောင့်၊ ဆက်စပ်နေတဲ့ ဉ (ဉလေး) စာလုံးကို Q ( Shift + q ) မှာ နေရာချထားတာမျိုး။ မြန်မာသရ ျ (ယပင်း) ကို အင်္ဂလိပ်စာလုံး small j j ကီးမှာ နေရာချထားသောကြောင့်၊ သရ ြ (ရရစ်) ကို အင်္ဂလိပ်စာလုံး capital J Shift + j မှာနေရာချထားတာမျိုး။ ဗျည်း ဝလုံးကို အင်္ဂလိပ်စာလုံး w ကီးနေရာမှာချထားသောကြောင့်၊ ွ (ဝဆွဲ) စာလုံးကို W ( Shift + w ) နေရာမှာချထားတာမျိုးပါ။

kKg ကီးဘုတ်မှာ အသံထွက်ပေါ်အခြေခံပြီး နေရာချတဲ့ အယူအဆအပြင်၊ နောက်ထပ် အယူအဆတခုက မြန်မာစာလုံးတွေရဲ့ စာလုံးပုံသဏ္ဍန်နဲ့ အင်္ဂလိပ်စာ စာလုံးပုံစံတွေရဲ့ဆင်တူမှု၊ အသုံးပြုမှုနဲ့ နီးစပ်တဲ့အပေါ်ကို အခြေခံတာပါ။
ဥပမာ။ ။

မြန်မာဗျည်း င ကို အင်္ဂလိပ်စာလုံး small c c ကီးမှာ နေရာချထားတာမျိုး၊
မြန်မာစာလုံး ့ နဲ့ ံ ကို အင်္ဂလိပ်စာလုံး full stop . ကီးမှာ နေရာချထားတာမျိုး၊
မြန်မာစာလုံး ၊ (ပုဒ်မ)ကို အင်္ဂလိပ်စာလုံး comma , ကီးမှာ နေရာချထားတာမျိုး၊
မြန်မာစာလုံး ျ (ယပင်း)ကို အင်္ဂလိပ်စာလုံး small j j ကီးမှာ နေရာချထားတာမျိုးပါ။

နောက်ပြီးတော့ မြန်မာစာလုံးတစ်လုံးကို Shift ကီးနဲ့ရိုက်တဲ့နေရာမှာထားမှာလား၊ Shift ကီးမပါပဲရိုက်တဲ့နေရာမှာထားမှလဲ ဆိုတာကလည်း ကီးဘုတ်လက်ကွက်နေရာချတဲ့အခါမှာ အရမ်းကိုအရေးကြီးပါတယ်။

ဥပမာ။ ။ ဘ နဲ့ ဗ က အသံထွက် အရ ba ဖြစ်လို့ အင်္ဂလိပ်စာလုံး b ကီးမှာနေရာချပါမယ်။ ဒီနေရာမှာ ဗျည်း ဘကုန်းကို ကျွန်တော်က b (unshifted key) နေရာမှာ ထားပြီး၊ ဗျည်း ဗထက်ခြိုက်ကိုတော့ B ( Shift + b ) နေရာမှာ ထားပါတယ်။ အကြောင်းအရင်းကတော့ ဘကုန်းက ဗထက်ခြိုက်ထက် နေ့စဉ်သုံးမြန်မာစာလုံးတွေမှာ ပိုများလို့ပါ။ မြင်သာတဲ့ စကားလုံးတွေကို ပြပါဆိုရင် ကျွန်တော်တို့ တရက်တရက် အများကြီးသုံးနေကြတဲ့ ... ယ်လိုလဲ။ ယ်သွားမလို့လဲ။ ယ်မှာရှိတာလဲ။ ယ်တော့လဲ။ ယ်သူ့ဆီက ဖုန်းလဲ။ ယ်လောက် ချစ်သလဲ။ ယ်လိုရှင်းပြရမလဲ။ ကြီး။ ယာကြော် ...

မြန်မာ သရသင်္ကေတ စာလုံးတွေကိုနေရာချတဲ့ နေရာမှာလဲ အထက်ပါရှင်းပြခဲ့တဲ့ အတိုင်း အခြေခံအားဖြင့် အသံထွက်အတိုင်းစဉ်းစားထားပြီး၊ တချို့ကိုသာ စာလုံးပုံသဏ္ဍန်နီးစပ်မှု နဲ့ နေရာချထားပါတယ်။ kKg ကီးဘုတ်ရဲ့ ကီးနေရာချထားပုံကို မြန်မာဗျည်း၊ သရသင်္ကေတအက္ခရာ အစီအစဉ်အတိုင်းသာ ချရေးမယ်ဆိုရင် အောက်ပါအတိုင်းဖြစ်ပါတယ်။

  • ဗျည်း

    က
    k

    K

    g

    G

    c

    s

    S

    z

    Z

    q

    v

    X

    V

    ~

    N

    T

    x

    d

    D

    n

    p

    P

    B

    b

    m

    Y

    y

    l

    w

    t

    h

    L

    a
  • သရသင်္ကေတ


    r

    R

    i

    I

    u

    U

    A

    e

    O

    o

    .

    >

    ;

တခြား ကျန်နေသေးတဲ့ မြန်မာအခြေခံသရ စာလုံးတွေကတော့ ဗျည်းနဲ့ အဓိကသုံးနေတဲ့ သရသင်္ကေတစာလုံးတွေကို နေရာချပြီးတဲ့နောက်၊ လွတ်နေသေးတဲ့ ကီးနေရာတွေပေါ်မှာ နေ့စဉ်စာရိုက်တဲ့ အခါမှာ အဆင်ပြေစေရန်နဲ့ ကျွန်တော်မှတ်မိရလွယ်တဲ့အတိုင်း နေရာချထားပါတယ်။ ဥပမာ၊ မြန်မာ သရသင်္ကေတ း (ဝစ္စနှစ်လုံးပေါက်) ကို အင်္ဂလိပ်စာလုံး semicolon ; ကီးမှာ နေရာချထားပါတယ်။ အမှန်တကယ်က း (ဝစ္စနှစ်လုံးပေါက်) က အင်္ဂလိပ်စာလုံး : (colon) နဲ့ပိုပြီး ပုံစံတူပါတယ်၊ သို့သော် း (ဝစ္စနှစ်လုံးပေါက်) စာလုံးက အရမ်းအသုံးများလို့ Shift ကီးနှိပ်စရာမလိုပဲ ရိုက်ရတဲ့ semicolon ကီးနေရာမှာပဲ နေရာချခဲ့ပါတယ်။ မြန်မာစာကြောင်းတွေ တစ်ကြောင်းပြီးဆုံးတိုင်းမှာ ရိုက်ရလေ့ရှိတဲ့ ။ (ပုဒ်မ) ကီးကိုလဲ Homekey မှာထား၊ နေ့စဉ်သုံး စကားတွေမှာ အသုံးနည်းတဲ့ ဎ (ဒရင်မှုတ်) လိုစာလုံးကို ရိုက်ရခက်တဲ့နေရာဖြစ်တဲ့ (ဘယ်လက်သန်းကိုလည်းသုံးရတဲ့) tilde ~ ကီးလိုနေရာမှာ နေရာချထားပါတယ်။ ဒါ့အပြင် မြန်မာစာလုံးတွေ မဟုတ်ပေမဲ့ မြန်မာအများစုက စာရိုက်တဲ့အခါ သုံးလေ့သုံးထရှိကြတဲ့ အင်္ဂလိပ်စာလုံးတွေဖြစ်တဲ့ ' (single quote) တို့၊ " (double quote) တို့ကိုလဲမဖယ်ဘဲ ဒီအတိုင်းပဲထားထားပါတယ်။ ပြောပြချင်တာက စာလုံးတစ်လုံးစီ၊ တစ်လုံးစီကို ကျွန်တော်ရဲ့ မြန်မာစာဗဟုသုတနဲ့ ကွန်ပျူတာကီးဘုတ်ကို သုံးပြီးစာရိုက်ခဲ့ရတဲ့ အတွေ့အကြုံအပေါ်ကို အခြေခံပြီး၊ ဉာဏ်မှီသ၍ စဉ်းစားခဲ့ပြီး နေရာချထားတာကိုပါ။ အမှန်တကယ်က ကီးဘုတ်ကီးတွေမှာ မြန်မာစာလုံးတွေကို နေရာတစ်မျိုးချပြီး၊ စမ်းရိုက်ကြည့်လိုက်၊ ရိုက်ရတာအဆင်မပြေရင်၊ နောက်ထပ် ကီးနေရာတခုအပေါ်ကို ရွှေ့လိုက်နဲ့ အဲဒီအချိန်တုန်းက ကျွန်တော် ရက်အတန်ကြာ ခေါင်းစားခဲ့ပါတယ်။ သို့သော် ကျွန်တော်ရဲ့ ကီးဘုတ်က အကောင်းဆုံးလို့တော့ မထင်ပါဘူး။ မြန်မာစာကို လူ့ဘဝမှာ ကွန်ပျူတာကီးဘုတ်နဲ့ ပထမဆုံး စာစရိုက်ဖို့အတွက် ကြုံလာတဲ့အချိန်အခါမှာ၊ လက်ရှိရှိနေတဲ့ ကီးဘုတ်တွေကိုကြည့်ပြီး လေ့ကျင့်ရမှာပျင်းတဲ့ ကျွန်တော်လိုလူမျိုးတွေအတွက်၊ Linux OS တခုခု (ဥပမာ Ubuntu) မှာပေါ့ပေါ့ပါးပါးနဲ့ မြန်မာစာရိုက်ချင်သူများအတွက်၊ နောက်ပြီး မြန်မာစာကို လေ့လာသင်ယူနေကြတဲ့ နိုင်ငံခြားသားများအတွက် အသုံးဝင်မယ်လို့ယူဆလို့ GitHub ပေါ်ကို တင်ပေးလိုက်ပါတယ်။

နောက်ပိုင်းမှာ ပိုကောင်းတဲ့၊ အများအတွက် ပိုပြီးမှတ်မိလွယ်စေမယ့်အကြံဉာဏ်မျိုးကို ကျွန်တော်ရလာတဲ့အခါ (သို့) အသုံးပြုသူတွေဆီက ကြားသိရတဲ့အခါမျိုးမှာ ထပ်ပြောင်းချင်ပြောင်းပါမယ်။ လက်ရှိ ကျွန်တော်အသုံးပြုနေတဲ့ kKg ကီးဘုတ်လက်ကွက် ကတော့ အောက်ပါအတိုင်းဖြစ်ပါတယ်။

kKg Keyboard Layout Version.1

စာရိုက်နည်း (သို့) ရိုက်ရတဲ့အစီအစဉ်က လက်ရှိ Unicode ကီးဘုတ်တွေရဲ့ ရိုက်နည်းနဲ့ အတူတူပါပဲ။
ဥပမာ။ ။

  • ကေဆိုတဲ့ ဗျည်းတွဲကိုရိုက်မယ်ဆိုရင် က ကိုအရင်ရိုက်ပြီးမှ ေ ကိုရိုက်ပါ။
  • ကုံ ကိုရိုက်မယ်ဆိုရင် က + ု + ံ (ku>) အစီအစဉ်အတိုင်း ရိုက်ရပါမယ်။
  • ပါဌ်ဆင့် က္က (ကကြီး နှစ်လုံးဆင့်) ကို ရိုက်မယ်ဆိုရင် က + ္ + က (kFk) အစီအစဉ်အတိုင်း ရိုက်ရပါမယ်။

Installation လုပ်ပုံလုပ်နည်း

kKg ကီးဘုတ်လက်ကွက်က Linux OS တွေပေါ်မှာပဲသုံးဖို့ ရည်ရွယ်ထားတာမဟုတ်ပါဘူး။ ကျွန်တော့်မှာ Windows OS အဟောင်းတွေအတွက် Installer လုပ်ထားခဲ့တာတွေရှိပါတယ်။ အချိန်ရတဲ့အခါ လက်ရှိ Windows OS တွေအတွက် ပြင်ဆင်ပြီး တင်ပေးနိုင်အောင် ကြိုးစားပါမယ်။ လက်ရှိတော့ Linux OS ပေါ်မှာ (အဓိက အသုံးများတဲ့ Ubuntu OS မှာ) ဘယ်လို install လုပ်ရမလဲဆိုတာကိုရေးပါမယ်။

Ubuntu OS အတွက် Installation

အကြမ်းမျဉ်းအားဖြင့် Installation လုပ်နည်း ၂မျိုးရှိပါတယ်။ ဘယ်နည်းမဆို လက်ရှိရှိပြီးသား default mm (မြန်မာဘာသာ) ကီးဘုတ်လက်ကွက်ကို မဖျက်ပစ်ပါဘူး။ X windows ရဲ့ GUI Setup Menu ဖြစ်တဲ့ Text Entry Settings ရဲ့ Choose an input source ဆိုတဲ့ dialogue box မှာ မြန်မာစာကီးဘုတ်လက်ကွက်အနေနဲ့ ၂ခု (default mm ရော၊ kKgရော) ပေါ်ချင်သလား၊ ၁ခုတည်းပဲ (kKg လက်ကွက်ပဲ) ပေါ်မလားဆိုတာပဲ ကွာသွားမှာပါ။ လက်ရှိသုံးနေတဲ့ Ubuntu OS ရဲ့ ဗားရှင်း (သို့) X Windows Desktop အမျိုးအစားအပေါ်မူတည်ပြီး လုပ်ရတာမှာ အဆင်မပြေတာမျိုးတွေရှိတတ်လို့၊ Linux OSနဲ့ သိပ်အကျွမ်းတဝင် မရှိသေးတဲ့ အသုံးပြုသူများအတွက် Installation နည်း ၂ မျိုးအနေနဲ့ ဖော်ပြပေးထားတာပါ။

Installation လုပ်နည်းအမှတ်(၁)

kKg လက်ကွက်ကို လက်ရှိ ရှိပြီးသား default မြန်မာစာ ကီးဘုတ်လက်ကွက်နေရာမှာ အစားထိုးမယ်ဆိုရင် အောက်ပါအစီအစဉ်အတိုင်း လုပ်ဆောင်ပါ။ ဒီ installation နည်းနဲ့ လုပ်လျှင်၊ Text Entry Settings ကနေ ကီးဘုတ်ကို ရွေးတဲ့အခါ Burmese ဆိုတဲ့ Ubuntu OS ရဲ့ default name အနေနဲ့မြင်ရပါလိမ့်မယ်။ GitHub ကနေ kKg ကီးဘုတ်ကို download လုပ်ပြီးသားအခြေအနေနဲ့ ရှင်းပြပါမယ်။ ကိုယ့်ရဲ့ user account က sudoers list ထဲမှာ ရှိရပါမယ်။

၁။ ပထမဆုံး xkb/symbols ဖိုလ်ဒါ ရှိတဲ့ နေရာကို ရွှေ့ရအောင်
cd /usr/share/X11/xkb/symbols/

၂။ လက်ရှိရှိနေတဲ့ မြန်မာစာ ကီးဘုတ်လက်ကွက် ဖိုင် mm ကို mm.default ဆိုတဲ့ နာမည်ကို ပြောင်းပါ။ (တနည်းအားဖြင့်ပြောရရင်၊ မဖျက်ပါနဲ့) sudo mv ./mm ./mm.default

၃။ GitHub ကနေ ကိုယ်ဒေါင်းလုပ်လုပ်ထားတဲ့ path အောက်မှာရှိတဲ့ kkg ဖိုင်ကို /usr/share/X11/xkb/symbols/ ဖိုလ်ဒါအောက်မှာ mm ဆိုတဲ့ နာမည်နဲ့ သိမ်းပါ။
sudo cp ~/your-download-path/kkg ./mm

၄။ X Windows screen ရဲ့ အပေါ်ဆုံး ညာဖက်ဒေါင့်မှာရှိတဲ့ စာရိုက်နည်းတွေကို ရွေးရတဲ့ icon ကို ကလစ်လုပ်ပြီး၊ menu ရဲ့အောက်ဆုံးမှာ ရှိတဲ့ Text Entry Settings... ကို ရွေးပါ။ ပြီးရင် "+" button ကိုနှိပ်ပြီး အောက်မှာဖော်ပြထားတဲ့ အတိုင်း "Burmese" ဆိုတာကို ရွေးပါ။ ယခုလုပ်ခဲ့တဲ့ အဆင့်နံပါတ် ၄ က မြန်မာစာ စာရိုက်နည်း "Burmese" ကိုလည်း ကိုယ်သုံးနေတဲ့ X Windows မှာ သုံးချင်တဲ့ အခါမှာ ရွေးသုံးလို့ရအောင် input method တစ်ခုအနေနဲ့ ထည့်သွင်းထားခဲ့တာပါ။

choose-input-source-dialogue-box

နံပါတ် ၄ အဆင့်ကို အထက်ပါ ဖော်ပြထားခဲ့တဲ့ နည်းအပြင်၊ Ubuntu OS ရဲ့ "System Setting" ကနေလည်းသွားလို့ရပါတယ်။ အဲဒီလိုသွားမယ်ဆိုရင်တော့၊ "System Setting" menu ကနေ "Text Entry" ကိုရွေးပါ ပြီးတော့ "+" button ကို နှိပ်ပြီး "Burmese" ကိုရွေးပါ။

၅။ အထက်ပါဖော်ပြခဲ့တဲ့ အဆင့်နံပါတ်(၁) ကနေ အဆင့်နံပါတ်(၄) အထိ အခက်အခဲမရှိ လုပ်ဆောင်ပြီးပြီဆိုပါက၊ နောက်ဆုံးအဆင့်အနေနဲ့ ကိုယ်ရိုက်မဲ့ ကီးဘုတ်လက်ကွက်ကို ရွေးတဲ့ အဆင့်ပဲလုပ်ဆောင်ဖို့ ကျန်ပါတော့တယ်။ ဒီကီးဘုတ်လက်ကွက် ရွေးတာကိုလည်း နည်းနှစ်နည်းနဲ့ ရွေးနိုင်ပါတယ်။ ပထမနည်းက X Windows Desktop ရဲ့ ညာဘက် ထိပ်ဆုံးထောင့်မှာရှိတဲ့ "Text input method icon" (အောက်ပါ ပုံမှာ ပြထားသည့်အတိုင်း) ကနေ "Burmese" ဆိုတာကို ရွေးတဲ့နည်းပါ။ ဒုတိယနည်းကတော့ သတ်မှတ်ထားတဲ့ shortcut key နဲ့ ကိုယ်ရိုက်ချင်တဲ့ ကီးဘုတ်လက်ကွက်ကို ရွေးချယ်တဲ့နည်းပါ။ ပုံမှန်အားဖြင့်က "Super" ကီးနဲ့ "Space Bar" ကိုတွဲနှိပ်ပြီး ပြောင်းလို့ရပါတယ်။ ဒီနေရာမှာ "Super" ကီးဆိုတာက ပုံမှန် PC ကီးဘုတ်မှာဆိုရင် ဘယ်ဘက်အောက်ဆုံးမှာ ရှိတဲ့၊ Ctrl ကီးနဲ့ Alt ကီးနှစ်ခုကြားက Windows OS Logo နဲ့ ပြထားတဲ့ Windows key ကီးကို ဆိုလိုတာပါ။ Apple ကွန်ပြူတာကီးဘုတ်မှာဆိုရင်တော့ ⌘ Command ကီး ဖြစ်ပါတယ်။ ကိုယ်ရဲ့ ကွန်ပြူတာမှာ လက်ရှိအသုံးပြုနေသော ကီးဘုတ် အရေအတွက် ပေါ်မူတည်ပြီး၊ ကိုယ်အသုံးပြုချင်သော ကီးဘုတ်လက်ကွက်ဆီကို ရောက်ရှိရန် "Super key" + "Space bar" ကို တစ်ခါထက်ပိုပြီး နှိပ်ရကောင်း နှိပ်ရနိုင်ပါတယ်။

text-input-method-icon

အထက်ပါပုံမှာ မြင်ရတဲ့ "Ja" ဆိုတာက လက်ရှိ အသုံးပြုနေတဲ့ ကီးဘုတ်လက်ကွက်က ဂျပန်ကီးဘုတ်လက်ကွက်ဖြစ်ကြောင်းကို ဖော်ပြနေတာပါ။

Installation လုပ်နည်းအမှတ်(၁) အတွက် Uninstall လုပ်နည်း (သို့) System ရဲ့ default mm ကီးဘုတ်လက်ကွက်သို့ ပြန်ပြောင်းခြင်း

Ubuntu ကို installation လုပ်ခဲ့စဉ်ကတည်းက ပါလာတဲ့ မြန်မာစာကီးဘုတ်လက်ကွက်ကို ပြန်ပြောင်းချင်တယ် ဆိုရင် ပြောင်းသိမ်းခဲ့တဲ့ mm.default ဖိုင်ကို mm ဆိုတဲ့ နာမည်ကို ပြန်ပြောင်းပေးလိုက်ယုံပါပဲ။ ဖိုင်နာမည်ပြောင်းတဲ့ mv command ကို သုံးဖို့အတွက် sudo နဲ့ တွဲသုံးရပါလိမ့်မယ်။

  • နောက်တချက်၊ သိထားရမှာက system ကို upgrade လုပ်တဲ့ အခါမှာ Ubuntu က default အဖြစ်ပါတဲ့ mm ဖိုင်က ပြန် activate ဖြစ်သွားပြီး၊ အလိုအလျောက် uninstall လုပ်သွားနိုင်တယ်ဆိုတဲ့ အချက်ပါ။

Installation လုပ်နည်းအမှတ်(၂)

kKg ကီးဘုတ်ကို မြန်မာစာ ကီးဘုတ်လက်ကွက်အသစ်တခုအနေနဲ့ ကိုယ့်ရဲ့ ကွန်ပြူတာမှာထည့်ချင်တယ် ဆိုရင် အောက်ပါအစီအစဉ်အတိုင်း လုပ်ဆောင်ပါ။ GitHub ကနေ kKg ကီးဘုတ်ကို download လုပ်ပြီးသားအခြေအနေနဲ့ ရှင်းပြပါမယ်။ OSရဲ့ ကီးဘုတ်နဲ့ဆိုင်တဲ့ system setting ကိုဝင်ပြင်မှာမို့ ကိုယ့်ရဲ့ user account က sudoers list ထဲမှာ ရှိရပါမယ်။

၁။ GitHub ကနေ ကိုယ်ဒေါင်းလုပ်လုပ်ထားတဲ့ path အောက်မှာရှိတဲ့ kkg ဖိုင်ကို /usr/share/X11/xkb/symbols/ ဖိုလ်ဒါအောက်ကို ကော်ပီကူးပါ။

   sudo cp ~/your-download-path/kkg /usr/share/X11/xkb/symbols/kkg   

(ဖိုင်နာမည်က k နှစ်လုံးစလုံးအသေးပါ။)

၂။ /usr/share/X11/xkb/rules/ ဖိုလ်ဒါ ရှိတဲ့ နေရာကို ရွှေ့ပါ။

cd /usr/share/X11/xkb/rules  

၃။ text editor တစ်ခုခုနဲ့ (e.g. vi, emacs, gedit, sudoedit, nano ...) evdev.xml ဖိုင်ကို ဖွင့်ပါ။

 sudo gedit evdev.xml  

 ဖိုင်ကို ဖွင့်ပြီးရင် အောက်ပါ အတိုင်း kkg ကီ:ဘုတ်အတွက် xml content အသစ်တစ်ခုကို "! layout " ဆိုတဲ့နေရာမှာ ဝင်ရေးပါ။ ကောင်းတာကတော့ ရှိပြီးသားကို ကော်ပီကူးပြီး ပြင်တာမျိုးပါ။

 <layout> 
   <configItem>
     <name>kkg</name>
     
     <shortDescription>kkg</shortDescription>
     <description>kKg (Myanmar)</description>
     <languageList>
       <iso639Id>mya</iso639Id>
     </languageList>
   </configItem>
   <variantList/>
 </layout> 

xkg/symbols/အောက်မှာရှိတဲ့ဖိုင်နာမည် kkg က အားလုံးစာလုံးအသေးမို့လို့၊ <name> နဲ့ </name> tag နှစ်ခုကြားမှာ ရိုက်ထည့်တဲ့ နာမည်ကလည်း အားလုံး စာလုံးအသေးဖြစ်ရပါမယ်။
<description> tag အတွက်ကတော့ ကိုယ်ပေါ်စေချင်တဲ့ စာကြောင်းကို ရိုက်ထည့်လို့ရပါတယ်။

၄။ text editor တစ်ခုနဲ့ evdev.lst ဖိုင်ကို ဖွင့်ပြီးရင် အောက်ပါစာကြောင်းကို list item တစ်ခုအနေနဲ့ ရိုက်ထည့်ပါ။

 kkg             kKg (Myanmar)

ဘယ်နေရာမှာ ထည့်ရမလဲဆိုရင်တော့ ရှာရဖွေရလွယ်ကူအောင် k နဲ့စတဲ့ item တွေကြားမှာ ရိုက်ထည့်ထားရင် နောက်ပိုင်း ရှာဖွေတဲ့ အခါမှာ အဆင်ပြေ ပါလိမ့်မယ်။ ဥပမာအနေနဲ့ အောက်ပါပုံကို မှီငြမ်းပါ။

adding-in-evdev.lst-file

၅။ အထက်ပါ ဖိုင်နှစ်ဖိုင်ကို မှန်မှန်ကန်ကန် ပြင်ပြီးသွားရင် GUI မှာ ကီးဘုတ်ကိုရွေးတဲ့ icon ကနေတဆင့် Text Entry Settings ကိုရွေးရင် အောင်ပါအတိုင်း Text Entry ဒိုင်ယာလောခ့် ဘောက်စ် ကို မြင်ရပါလိမ့်မယ်။
(Ubuntu OS ရဲ့ System Settings ကနေလည်း Text Entry Settings ကို ဝင်လို့ရပါတယ်။)

text-entry-dialogue-box

၆။ Text Entry ဒိုင်ယာလောခ့် ဘောက်စ်မှာ "+" (plus) ကိုနှိပ်ပြီး ကီးဘုတ်အသစ်ဖြစ်တဲ့ "kkg (Myanmar)" ကိုရွေးပါ။

choose-an-kkg-input-Source

၇။ အထက်ပါဖော်ပြခဲ့တဲ့ အဆင့်နံပါတ်(၁) ကနေ အဆင့်နံပါတ်(၆) အထိ အခက်အခဲမရှိ လုပ်ဆောင်ပြီးပြီဆိုပါက၊ နောက်ဆုံးအဆင့်အနေနဲ့ ကိုယ်ရိုက်မဲ့ ကီးဘုတ်လက်ကွက်ကို ရွေးတဲ့ အဆင့်ပဲ လုပ်ဆောင်ဖို့ ကျန်ပါတော့တယ်။ ဒီကီးဘုတ်လက်ကွက် ရွေးတာကိုလည်း နည်းနှစ်နည်းနဲ့ ရွေးနိုင်ပါတယ်။ ပထမနည်းက X Windows Desktop ရဲ့ ညာဘက် ထိပ်ဆုံးထောင့်မှာရှိတဲ့ "Text input method icon" (အောက်ပါ ပုံမှာ ပြထားသည့်အတိုင်း) ကနေ "kkg (Myanmar)" ဆိုတာကို ရွေးတဲ့နည်းပါ။ ဒုတိယနည်းကတော့ သတ်မှတ်ထားတဲ့ shortcut key နဲ့ ကိုယ်ရိုက်ချင်တဲ့ ကီးဘုတ်လက်ကွက်ကို ရွေးချယ်တဲ့နည်းပါ။ ပုံမှန်အားဖြင့်က "Super" ကီးနဲ့ "Space Bar" ကိုတွဲနှိပ်ပြီး ပြောင်းလို့ရပါတယ်။ ဒီနေရာမှာ "Super" ကီးဆိုတာက ပုံမှန် PC ကီးဘုတ်မှာဆိုရင် ဘယ်ဘက်အောက်ဆုံးမှာ ရှိတဲ့၊ Ctrl ကီးနဲ့ Alt ကီးနှစ်ခုကြားက Windows OS Logo နဲ့ ပြထားတဲ့ Windows key ကီးကို ဆိုလိုတာပါ။ Apple ကွန်ပြူတာကီးဘုတ်မှာဆိုရင်တော့ ⌘ Command ကီး ဖြစ်ပါတယ်။ ကိုယ်ရဲ့ ကွန်ပြူတာမှာ လက်ရှိအသုံးပြုနေသော ကီးဘုတ် အရေအတွက် ပေါ်မူတည်ပြီး၊ ကိုယ်အသုံးပြုချင်သော ကီးဘုတ်လက်ကွက်ဆီကို ရောက်ရှိရန် "Super key" + "Space bar" ကို တစ်ခါထက်ပိုပြီး နှိပ်ရကောင်း နှိပ်ရနိုင်ပါတယ်။

selecting-kkg-eg

မှတ်ချက်။ ။ ကီးဘုတ်အသစ်အနေနဲ့ ထည့်တဲ့ အခါမှာ Ubuntu OS ရဲ့ distribution (သို့) ဗားရှင်းတွေအပေါ်ကို မူတည်ပြီး evdev.lst နဲ့ evdev.xml ဖိုင်နှစ်ဖိုင်ကို ဝင်ပြင်တာနဲ့ အဆင်မပြေရင် /usr/share/X11/xkb/rules/ အောက်မှာရှိတဲ့ base.lst, base.xml, xfree86.lst, xfree86.xml တွေကိုလည်း အထက်ပါအတိုင်း ဝင်ပြင်ပါ။ ဖိုင်တွေရဲ့ format တွေက အထက်မှာရှင်းပြခဲ့တဲ့ ဖိုင်နှစ်ဖိုင်ရဲ့ format နဲ့ အတူတူပါပဲ။ Ubuntu OS 14.04 LTS မှာ ဆိုရင် ဖိုင်တွေကို ဝင်ပြင်တာနဲ့ X windows မှာ text input method အနေနဲ့ ရွေးလို့ရပေမဲ့၊ တကယ်တမ်းက စာရိုက်တဲ့ အခါမှာ ကီးဘုတ်ကို ပြောင်းမပေးနိုင်သေးပါဘူး။ Reboot လုပ်မှ တကယ် active ဖြစ်ပြီး သုံးလို့ရပါတယ်။

Installation လုပ်နည်းအမှတ်(၂) အတွက် Uninstall လုပ်နည်း

အထက်ပါဝင်ပြင်ခဲ့တဲ့ evdev.lst နဲ့ evdev.xml စတဲ့ ဖိုင်တွေမှာ kkg နဲ့ ဆိုင်တဲ့ စာကြောင်းတွေကို ဝင်ဖျက်ပေးယုံပါပဲ။
အလွယ်ဆုံးနည်းကတော့ တကယ် uninstall လုပ်တာမဟုတ်ပေမဲ့၊ Text Entry Box မှာ "-" (Minus) နဲ့ kkg (Myanmar) ကိုဖြုတ်လိုက်တာပါပဲ။  

ပထမဆုံး kKg ကီးဘုတ်ကို သုံးတဲ့အခါ

  • လေ့ကျင့်ပုံ၊ လေ့ကျင့်နည်းနဲ့ ပတ်သက်ပြီး ကျွန်တော့်အကြံပေးချင်တာက အရင်ဆုံး ကီးဘုတ်မှာ မြန်မာစာလုံးတွေကို ဘယ်လို concept နဲ့ နေရာချထားတယ်ဆိုတာကို သဘောပေါက်အောင် ကြိုးစားပါ။ မြန်မာလူမျိုးတစ်ယောက်အနေနဲ့က မြန်မာစာလုံးတွေရဲ့ အသံထွက်ကိုလည်း သိထားပြီးသားပါ။ အဲဒီစာလုံးတွေကို အင်္ဂလိပ်လို စာလုံးပေါင်းတဲ့ အခါမှာလည်း ငယ်စဉ်ကတည်းက လူနာမည်တွေ၊ လမ်းနာမည်တွေကို Romanization လုပ်ပြီးရေးခဲ့ကြတဲ့ အတွေ့အကြုံတွေကလည်း ရှိတော့ "မ" စာလုံးက "m" ကီးနေရာမှာရှိမယ်၊ "နငယ်" တို့ "ဏကြီး" တို့က "n" စာလုံးနေရာမှာရှိမယ်၊ "ရကောက်" "ယပက်လက်" လို စာလုံးမျိုးတွေက "y" ကီးမှာရှိမယ်ဆိုတာကို အထူးတလည်မှတ်နေစရာမလိုပါဘူး။ သို့သော် စစချင်းမှာက shift-key နဲ့ တွဲရိုက်ရမှာလား၊ shift-key မလိုဘူးလားဆိုတာကိုတော့ လေ့ကျင့်ဖို့လိုအပ်ပါတယ်။

အထက်မှာ ဇယားနဲ့ရှင်းပြခဲ့တဲ့ အတိုင်း သရတွေကလည်း အသံထွက်အတိုင်းယူထားတာမို့ ရေးချ၊ မောက်ချက "r" ကီးနေရာမှာ၊ တစ်ချောင်းငင်၊ နှစ်ချောင်းငင်က "u" ကီးနေရာမှာဆိုတာလည်း သုံးလေးငါးခေါက်လောက် စမ်းရိုက်ကြည့်ရင်း မှတ်မိသွားပါလိမ့်မယ်။ သူငယ်ချင်း တချို့ကို kKg ကီးဘုတ်ကို စမ်းရိုက်ခိုင်းကြည့်တော့ အားလုံးက ၁၅မိနစ်၊ မိနစ်၂၀လောက် လေ့ကျင့်ပြီးတာနဲ့ စာကြောင်းတွေကို စမ်းရိုက်လို့ရနေပါပြီ။ မိနစ်၃၀၊ ၄၅မိနစ်လောက် အကြာမှာ တော်တော်ခပ်သွက်သွက်ကို ရိုက်နိုင်ကြောင်း တွေ့ရှိခဲ့ရပါတယ်။ သူတို့ရဲ့ဘေးမှာ ကီးဘုတ် လက်ကွက်စာရွက်ကို ချထားပေးခဲ့ပါတယ်။ သူတို့ကို kKg ကီးဘုတ်ကို စပြီး သုံးတဲ့အခါမှာ စမ်းရိုက်ခိုင်းတဲ့ စာသားအစီအစဉ် ပုံစံကတော့ အောက်ပါအတိုင်းဖြစ်ပါတယ်။

  • အသုံးများတဲ့ ဗျည်း

    က   ခ   ဂ   ဃ   င
    စ   ဆ   ဇ   ဈ   ည
    ဌ   ဏ
    တ   ထ   ဒ   ဓ   န
    ပ   ဖ   ဗ   ဘ   မ
    ယ   ရ   လ   ဝ  သ
    ဟ   အ
       
     ဝ   ထ   က   လ   သ
    
  • သရသင်္ကေတများ

    ာ   ါ   ိ   ီ   ု   ူ   ေ   ဲ  ့  ်   ံ   း
    

    (သရသင်္ကေတများကို ငယ်ငယ်တုန်းက မြန်မာစာအတန်းမှာလို ပါးစပ်ကနေပါ အ၊ အာ၊ အိ၊ အီ၊ အု၊ အူ၊ အေ၊ အဲ၊ အော့၊ အော်၊ အံ၊ အား ရွတ်ဆိုရင်း စမ်းရိုက်ကြည့်ပါ။)

  • ဗျည်းနဲ့ သရတွဲများ

    က ကာ ကိ ကီ ကု ကူ ကေ ကဲ ကော့ ကော် ကံ ကား
    ခ ခါ ခိ ခီ ခု ခူ ခေ ခဲ ခေါ့ ခေါ် ခံ ခါး
    ဂ ဂါ ဂိ ဂီ ဂု ဂူ ဂေ ဂဲ ဂေါ့ ဂေါ် ဂံ ဂါး
    စ စာ စိ စီ စု စူ စေ စဲ စော့ စော် စံ စား
    ပ ပါ ပိ ပီ ပု ပူ ပေ ပဲ ပေါ့ ပေါ် ပံ ပါး
    မ မာ မိ မီ မု မူ မေ မဲ မော့ မော် မံ မား
    အ အာ အိ အီ အု အူ အေ အဲ အော့ အော် အံ အား
    
  • ပင့်ရစ်ဆွဲထိုးကိုပါ တွဲလေ့ကျင့်ခြင်း

    ကွ ပွ မွ လွ
    ကျ ကျွ ကြ ကြွ
    ကျွဲ ကြွဲ ချွဲ ဂျွဲ
    မွဲ ပွဲ ဆွဲ ရွဲ
    မမ လှလှ
    နွှဲ နွှဲ ကျွဲ ကျွဲ
    မျ မြ မျာ များ
    ကျောင်းသား ကျောင်းသူ ဆရာမ ကျောင်းသွား 
    ရောင်းကောင်း စားကောင်း ကောင်းမှကောင်း
    မသိ တယောက် နှစ်ယောက် သုံးလေးယောက်
    
  • စာကြောင်းအလွယ်များ၊ စာကြောင်းတိုများနဲ့ ပုဒ်ထီး၊ ပုဒ်မများ

    မမ ဝဝ ထထ က
    အက ပထမ
    ကပါ ကပါ မမရာ
    ညည လသာသာ
    
    ကျောင်းမှန်မှန်တက်၊ စာမခက်။
    မအိပ်မနေ၊ အသက်ရှည်။
    မေးပါများ၊ စကားရ။
    
    ရန်ကုန်မှာ၊ လူများတယ်။
    နယ်မှာက၊ လူနည်းတယ်။
    
  • ပါဌ်ဆင့်ကို စာလုံးတချို့

    တက္ကသိုလ်၊ မိတ္တီလာ၊ ပုပ္ပါး၊ သမ္မတ၊ ပြဿနာ၊ ပစ္စည်းများ။
    
  • နောက်ဆုံး အဆင့်အနေနဲ့ ကိုယ်ရိုက်ချင်တာ၊ ခေါင်းထဲမှာ ပေါ်လာသော မြန်မာစာကြောင်းများကို စမ်းရိုက်တာမျိုး၊ website တခုခုက မြန်မာစာကြောင်းတွေကို စမ်းရိုက်တာမျိုး လုပ်ကြည့်ပါ။ အစမှာ နှေးတော့ နှေးပါလိမ့်မယ်။ မှားလို့ ပြင်ရတာတွေလဲ ရှိမှာပါ။ သို့သော် တခြားသော မြန်မာစာကီးဘုတ်လက်ကွက်တွေကို လေ့ကျင့်တာနဲ့ နှိုင်းယှဉ်ကြည့်ရင် အရမ်းကို မြန်တာတွေ့ရပါလိမ့်မယ်။

    လေ့ကျင့်ပုံ လေ့ကျင့်နည်း နမူနာကို ဗီဒီယိုအနေနဲ့လည်း တင်ပေးထားပါတယ်။

    video-4-1st-time-users

    Enjoy! kKg keyboard!

FYI: Hacking XKB

XKB (X Keyboard Extension) က X Window System (Linux OS ရဲ့ GUI) ရဲ့ အစိတ်အပိုင်းတခုဖြစ်ပြီး၊ ကီးဘုတ်နဲ့ သက်ဆိုင်တဲ့ ဆက်သွယ်မှု၊ ထိန်းချုပ်မှု၊ configuration စသည့်ကိစ္စအားလုံးနဲ့ သက်ဆိုင်ပါတယ်။ XKB ရဲ့ အလုပ်လုပ်ပုံကိုသိဖို့အတွက် လေ့လာတဲ့အခါမှာ လက်တွေ့မပါပဲက တော်တော်ကို ခက်ခဲပါလိမ့်မယ်။ Online documentation အနေနဲ့ ကလည်းရှားပါးပြီး၊ ရှိတဲ့ webpage တွေကို ဖတ်ကြည့်ရင်လည်း ထဲထဲဝင်ဝင် သိနားလည်ဖို့က အချိန်တော်တော်ကို ယူရပါတယ်။ ဒါကြောင့် စိတ်ဝင်စားသောသူများ က hacking လုပ်တဲ့အခါမှာ အသုံးဝင်မဲ့ အချက်အလက်တချို့နဲ့ အသုံးပြုရသောပရိုဂရမ် စတာတွေကို ဒီနေရာမှာ ဖော်ပြပါမယ်။

FYI: ဒီ Hacking XKB အတွက် ဥပမာအနေနဲ့ စမ်းသပ်ပြထားတာတွေက Ubuntu OS (version 16.04 LTS) အပေါ်မှာပါ။

Ubuntu OS မှာဆိုရင် /usr/share/X11/xkb/ ဆိုတဲ့ path အောက်မှာရှိတဲ့ compact/, geometry/, keycodes/, rules/, symbols/ နဲ့ types/ ဆိုတဲ့ folder ခြောက်ခုရဲ့ အောက်မှာရှိတဲ့ ဖိုင်တွေကို ဝင်ပြင်တာ၊ ဖိုင်အသစ်ဆောက်တာတွေလုပ်ပြီး ကီးဘုတ်နဲ့ ပတ်သက်တဲ့ setting တွေကို အမျိုးမျိုးစမ်းသပ်ကြည့်နိုင်ပါတယ်။

xkb-path-info
(အထက်ပါဖို(လ်)ဒါက ဖိုင်တွေကို ဝင်ပြင်ဖို့ ဆိုရင် sudo command ကို သုံးဖို့လိုအပ်ပါတယ်)

အသုံးဝင်တဲ့ (မသိလို့မဖြစ်တဲ့) command တွေနဲ့ သုံးပုံသုံးနည်း (example usage) တချို့ကတော့ အောက်ပါအတိုင်းဖြစ်ပါတယ်။

  • ကီးဘုတ်ကို us layout အဖြစ်ပြောင်းချင်တဲ့အခါ
    $ setxkbmap -layout us

  • DVORAK (Dr. Augustine Dvorak နဲ့ Dr. William Dealey တို့က ဒီဇိုင်းလုပ်ခဲ့တဲ့ keyboard layout) အဖြစ်ပြောင်းကြည့်မယ်ဆိုရင်
    $ setxkbmap -layout us -variant dvorak

  • Ubuntu OS မှာ default အနေနဲ့ ပါတဲ့ မြန်မာစာကီးဘုတ်အနေနဲ့ ပြောင်းကြည့်မယ်ဆိုရင်
    $ setxkbmap -layout mm

  • တကယ်လို့ kKg ကီးဘုတ်ကို installation လုပ်ထားပြီးလို့ kKg ကီးဘုတ်အဖြစ် ပြောင်းကြည့်မယ်။ ပြီးတော့ verbose option ကိုလည်းထည့်မယ်ဆိုရင်
    $ setxkbmap -print -layout kkg -verbose

    setxkbmap-kkg-verbose-command

  • setxkbmap ရဲ့ option တွေဖြစ်ကြတဲ့ -rules, -model, -layout, -variant တွေကို အားလုံးပေါင်းပြီး တခါတည်းလည်း ပြောင်းလို့ရပါတယ်။ ဥပမာ ကိုယ်ရဲ့ US keyboard 105 keys ကီးဘုတ်မှာ ပြင်သစ်စာလုံး၊ ဂျာမန်စာလုံး၊ စပိန်စာလုံး တွေကိုပါရိုက်ချင်တယ်ဆိုရင်၊ us layout (လက်ကွက်) altgr-intl variant (အမျိုးကွဲ တစ်ခု) အဖြစ် အောက်ပါအတိုင်း ပြောင်းလို့ရပါတယ်။

    setxkbmap -rules evdev -model evdev -layout us -variant altgr-intl
    (သို့)
    setxkbmap -model pc105 -layout us -variant altgr-intl

  • setxkbmap ရဲ့ command option တွေကို ပိုသိချင်ရင်၊ အောက်ပါ command ကိုရိုက်ပြီး User manual ကိုဖတ်ကြည့်ပါ။
    $ man setxkbmap

  • xkeyboard-config ရဲ့ user manual ကို ဖတ်ကြည့်ပြီး setxkbmap command မှာသုံးတဲ့ model နာမည်တွေ (pc105, microsoft, macbook79, ...)၊ layout နာမည်တွေ (us, nl, fi, de(deadacute), de(dvorak), de(mac), de(mac_nodeadkeys), de(dsb_qwertz) ...) နဲ့ ပတ်သက်ပြီး အသေးစိတ်ဖတ်ကြည့်ချင်ရင်
    $ man xkeyboard-config

  • xev (print contents of X events) command ကိုသုံးပြီး လက်ရှိသုံးနေတဲ့ ကီးဘုတ်လက်ကွက်က ကီးတခုချင်းစီရဲ့ အချက်အလက်တွေကို ရှာဖွေလို့ရနိုင်ပါတယ်။ X server ဆီကို typing event အနေနဲ့ ပို့ပြီး ပြန်လာတဲ့ outputတွေကို လေ့လာကြည့်နိုင်ပါတယ်။ ဥပမာတခုအနေနဲ့ kKg ကီးဘုတ်ကို installation လုပ်ထားပြီး၊ ကီးဘုတ်ကိုလဲ kkg အဖြစ်ပြောင်းထားပြီး xev command နဲ့ k ကီးကို ရိုက်ကြည့်မယ်ဆိုရင် အောက်ပါအတိုင်း မြင်ရပါလိမ့်မယ်။ (လက်တွေ့မှာတော့ မြန်မာစာကီးဘုတ်လက်ကွက် kkg ကိုမပြောင်းခင် command prompt မှာ xev ကို အရင်ကြိုရိုက်ထားရပါလိမ့်မယ် (သို့) Right Alter Key နဲ့ ရိုက်ရပါလိမ့်မယ်)

xev-with-kkg-k-key-screen

  • xkbcomp နဲ့ kkg ကီးဘုတ်ရဲ့ key mapping အသေးစိတ်ကို ဖိုင်အနေနဲ့ print လုပ်ကြည့်လို့ရပါတယ်။
    $ xkbcomp -xkb $DISPLAY xkbmap-kkg

    (xkbmap-kkg ဖိုင်ကိုလဲ တင်ပေးထားပါတယ်)

  • Linux OS မှာ input device တစ်ခုကနေ application အထိ ဘယ်လို အဆင့်ဆင့် input handling လုပ်သလဲဆိုတာကို အလွယ်ရှင်းပြရရင်၊ အရင်ဆုံး hardware တစ်ခုဖြစ်တဲ့ ကီးဘုတ် ကနေ ကီးတစ်ခုကို နှိပ်လိုက်လို့ (သို့) လွှတ်လိုက်လို့ event signal ဝင်လာတဲ့အခါမှာ CPU က interrupt ဖြစ်ပြီး kernel က event signal နဲ့ ပတ်သက်ပြီးရှာဖွေပါတယ်။ အဲဒီနောက် kernel က scancode အနေနဲ့ ဘယ်ကီးကို နှိပ်လိုက်တယ်၊ လွှတ်လိုက်တယ် ဆိုတာကို သိရှိပါတယ်။ အဲဒီအဆင့်မှာ X11 (X Window server) က kernel ကနေ ရလာတဲ့ scancode ကို ကီးဘုတ်ရဲ့ device ဖိုင်နဲ့တိုက်စစ်ပြီး keycode အနေနဲ့ လက်ခံယူပါတယ်။ X11 ကနေမှ keysym+Modifiers အနေနဲ့ user အသုံးပြုနေတဲ့ application ဆီကိုပို့ပါတယ်။ ဒီနေရာမှာ keysym ဆိုတာက Key symbol စာလုံးရဲ့ အတိုကောက်ဖြစ်ပြီး၊ Modifiers ဆိုတာက Shift ကီး၊ Control ကီး၊ Alter ကီး စတဲ့ ကီးတွေကိုပါ တွဲနှိပ်လိုက်သလား ဆိုတဲ့ အချက်အလက်တွေပါ။ မြင်သာအောင် ပုံဆွဲပြရရင်တော့ အောက်ပါအတိုင်း ဖြစ်ပါလိမ့်မယ်။

+----------+             +-----+             +--------+             +-----+             +-------------+
| keyboard |------------>| CPU |------------>| kernel |------------>| X11 |------------>| Application |
+----------+             +-----+             +--------+             +-----+             +-------------+
             Key Down/Up          Interrupt               Scancode            Keysym +
                                                          (Keycode)           Modifiers
  • xset command ကို သုံးပြီး typematic delay အချိန်နဲ့ rate ကိုပြောင်းကြည့်လို့ရပါတယ်။ အတိုရှင်းပြရရင်၊ ကီးတခုကို ဆက်တိုက်ဖိထားတဲ့ အချိန်မှာ အဲဒီဖိထားတဲ့ကီးမှာ mapping လုပ်ထားတဲ့ စာလုံးကို ဘယ်လောက် frequencyနှုန်း (Hzနဲ့တိုင်းတယ်) မြန်မြန်နဲ့ စကရင်မှာ ရိုက်ထုတ်ပြမလဲဆိုတာကို ချိန်တာပါ။
    $ xset r rate 220 160

  • ပုံမှန် (default setting) အတိုင်းပြန်ထားမယ်ဆိုရင်
    $ xset r rate

  • တကယ်တမ်းက လက်ရှိကီးဘုတ်မှာရှိနေတဲ့ CapsLock ကီးက သိပ်အသုံးမဝင်ပါဘူး။ တခါတလေ မှားနှိပ်မိထားလို့ စာပြန်ပြင်ရိုက်ရတဲ့ အတွေ့အကြုံကိုလဲ ကြုံဖူးကြမယ်လို့ ထင်ပါတယ်။
    C လို၊ C++ ပရိုဂရမ်းမင်း ဘာသာစကားအတွက် မာကရိုတွေ ( ဥပမာ __CHAR_UNSIGNED__, __SIZEOF_LONG__, __INCLUDE_LEVEL__) အများကြီးရိုက်နေတဲ့ သူတွေအတွက်တော့ အသုံးဝင်ချင် ဝင်ပါလိမ့်မယ် :) ။ အနှောက်အယှက်ဖြစ်နေလို့ CapsLock ကီးကို Shift ကီးလိုပဲ အလုပ်လုပ်ခိုင်းလို့ရပါတယ်။ အောက်ပါ xmodmap command နဲ့စမ်းကြည့်ပါ။
    $ xmodmap -e "keycode 66 = ISO_Level3_Shift"

  • CapsLock ကီးကို Escape ကီးအဖြစ်လဲ ပြောင်းလို့ရပါတယ်။
    $ xmodmap -e "keycode 66 = Escape"

  • xmodemap command ကိုသုံးပြီး၊ Alter ကီးနဲ့ပတ်သတ်ပြီးတာကိုပဲ ကြည့်ချင်တယ်ဆိုရင်
    $ xmodmap -pk | grep -i alt

xmodemap-4-alt-key-screen-output

  • xmodemap ကို သုံးပြီး လက်ရှိ kKg keyboard လက်ကွက်ရဲ့ key code တွေနဲ့ သက်ဆိုင်ရာကီးတွေကို list လုပ်ပြီး၊ ဖိုင်အနေနဲ့သိမ်းထားချင်တယ်ဆိုရင်
    $ xmodmap -pke > kkg-xmodmap-pkeOption.txt
    လေ့လာချင်သူများအတွက်၊ xkb-intro/ ဖိုလ်ဒါအောက်မှာ kKG keyboard (version 1.0) ရဲ့ key code တွေကို kkg-xmodmap-pkeOption.txt ဖိုင်အနေနဲ့သိမ်းပြီး တင်ပေးထားပါတယ်။

  • ကီးဘုတ်လက်ကွက်ပုံစံ (/usr/share/X11/xkb/geometry/) တွေကို pdf ဖိုင်အနေနဲ့ print လုပ်ခိုင်းလို့ရပါတယ်။
    $ xkbcomp /usr/share/X11/xkb/geometry/pc - | xkbprint -color -o - - | ps2pdf - > ~/experiment/kkg/4github/pc-symbols.pdf

    ဥပမာအနေနဲ့ pc-geometry ဖိုင်နဲ့ microsoft-geometry ကိုလဲ တင်ပေးထားပါတယ်။ လေ့လာကြည့်ပါ။

  • showkey ဆိုတဲ့ command နဲ့ လဲ ကီးဘုတ် ကီးတွေရဲ့ ascii-code, scan-codes, key-codes ကိုကြည့်လို့ရပါတယ်။ -s (--scancodes) option နဲ့ -k (--keycodes) option တွေက ပုံမှန် terminal မှာ အလုပ်မလုပ်ပါဘူး။ virtual consoal (e.g. tty1, tty2) တွေမှာမှ အလုပ်လုပ်ပါလိမ့်မယ်။

ပြောရမယ်ဆိုရင်တော့ showkey က ဟိုးအရင်ကတည်းက သုံးခဲ့ကြတဲ့ command ဖြစ်ပုံရပါတယ်။ စမ်းကြည့်ချင်လို့ virtual console 1 ကို သွားမယ် ဆိုရင် Ctrl+Alt+F1 ကို နှိပ်ပါ။ ပုံမှန်က virtual console (virtual terminal လို့လဲခေါ်) ၆ခု အထိ (F1 .. F6) အထိသုံးလို့ရတယ်။ virtual console က graphical environemnt မလိုပဲသုံးချင်တဲ့ အခါ၊ တချို့ system level အတွက် အလုပ်လုပ်တဲ့ အခါမှာသုံးတယ်။ အဲဒါကြောင့် သူက ကျွန်တော်တို့ ပုံမှန်သုံးနေကြတဲ့ X Windows အထဲကနေ ခေါ် run တဲ့ terminal နဲ့ မတူဘူး။ အောက်ကပုံမှာ ကျွန်တော်ရဲ့စက် virtual console တစ်ခုမှာ showkey နဲ့ scancodes တွေကို ဖတ်ကြည့်တာကို ဥပမာအနေနဲ့ မြင်ရပါလိမ့်မယ်။

testing-showkey-scancodes-option-at-tty1

virtual console တွေကနေ X ကို ပြန်သွားမယ်ဆိုရင် Ctrl+Alt+F7 ကိုနှိပ်ပါ။

  • Key Code Naming Convention
    XKB မှာ ကီးဘုတ်ရဲ့ ကီးတခုချင်းစီကို ပေးထားတဲ့နာမည်ရှိပါတယ်။ symbol ဖိုင်မှာ ဘယ်ကီးမှာ ဘယ်စာလုံး ပေါ်ချင်တယ်ဆိုပြီး mapping လုပ်တဲ့အခါ အဲဒီ ကီးကုဒ်နာမည်တွေကို ယူသုံးပါတယ်။ ကီးဘုတ်ကီးအားလုံးအတွက် mapping ကိုတော့ https://github.com/ye-kyaw-thu/kKg-Myanmar-Keyboard/blob/master/xkb-intro/pc-geometry.pdf မှာတင်ပေးထားတဲ့ pc-geometry.pdf ဖိုင်ကိုမှီငြမ်းပါ။ အကြမ်းမျဉ်း ရှင်းပြရန် အောက်ပါပုံကိုညွန်းပါမယ်။

figure4key-symbol-explanation
(အထက်ပါ ပုံကို အပြင်မှာရှိနေတဲ့ ကီးဘုတ်က ကီးတွေနဲ့ နှိုင်းယှဉ်ကြည့်ရင် ပိုပြီး မြင်သာပါလိမ့်မယ်)

ကီးဘုတ်မှာ စပေစ့်ဘားရှိတဲ့ အောက်ဆုံး key row ကို A row အဖြစ်မြင်ပါ။ အောက်ကနေ အထက်ကို A, B, C, D, E ဆိုပြီးတက်သွားပါမယ်။ Key row တခုချင်းစီမှာ ဘယ်ဘက်ကနေ၊ ညာဘက်ကို special key (ဥပမာ Ctrl, Shift, CapsLock, Tab ...) တွေကို မစဉ်းစားပဲ 1, 2, 3, 4, 5 ... ဆိုပြီး နံပါတ်တခုချင်းစီတိုးပြီး ရေတွက်ပါတယ်။ Alphabetic key တွေကို A နဲ့စပါတယ်။ အခုလောက်ဆို မြင်လောက်ပါပြီ။ အဲဒါကြောင့် z key ကို AB01 လို့နာမည်ပေးထားပါတယ်။ AB01 မှာ ပထမစာလုံး A က Alphabetic key မို့လို့၊ ဒုတိယစာလုံး B က ဒုတိယ row မှာရှိနေလို့၊ 01 ကတော့ (Shift ကီးကိုမရေတွက်ပဲ) ပထမဆုံး Alphabetic ကီးမို့လို့ပါ။ ထိုနည်းလည်းကောင်း z key ကနေအပေါ်ကို တက်သွားမယ်ဆိုရင်၊ a key ကို AC01, q key ကို AD01 ဆိုပြီးခေါ်ပါတယ်။ q key ရှိတဲ့နေရာကနေ ညာဘက်ကို ရွှေ့ကြည်မယ်ဆိုရင်၊ w key က AD02၊ e key က AD03၊ r key က AD04 ဆိုပြီး ကီးတွေကိုနာမည် သတ်မှတ်ထားပါတယ်။ Alphabetic ကီးတွေရဲ့ နာမည်တွေကသာ စစချင်းမှာစိမ်းတာပါ။ တခြားကီးတွေက မှတ်ရတာလွယ်ပါတယ်။ နံပါတ် ကီးပတ်ကီး (Numeric Keypad) တွေရဲ့နာမည်က KP နဲ့ စပြီး ကီးပတ်မှာရှိတဲ့ ဂဏန်းနံပါတ်အစီအစဉ်အတိုင်း Numeric key 1 က KP1, Numeric key 2 က KP2, Numeric key 3 က KP3 ဆိုပြီးခေါ်ပါတယ်။ တခြား Special key တွေက နာမည်ကို ကြည့်တာနဲ့ မှန်းဆကြည့်လို့ရပါတယ်။ ဘယ်ဘက်မှာရှိတဲ့ Left shift ကီးကို LFSH, ညာဘက်မှာရှိတဲ့ Right Shift ကီးကို RTSH, Tab key ကို TAB, CapsLock key ကို CAPS, Function key တွေကိုတော့ FK01, FK02, FK03 စသည်ဖြင့်ခေါ်ပါတယ်။

  • symbol ဖိုင်တွေကိုပြင်တဲ့အခါ

    ကီးတွေကို နေရာဝင်ချတာ (သို့) ဘယ်ကီးကို နှိပ်ရင် ဘယ်စာလုံးကို ပေါ်ပေးပါဆိုပြီး mapping လုပ်တာက Ubuntu OS မှာဆိုရင် /usr/share/X11/xkb/symbols/ ဖို(လ်)ဒါအောက်မှာရှိတဲ့ country code (ISO 3166-1 alpha-2) နဲ့ နာမည်ပေးထားတဲ့ ဖိုင်တခုကို ဝင်ပြင်တာပါ။ မြန်မာစာနဲ့ ပတ်သတ်ရင် mm ဖိုင်ကို ဝင်ပြင်ပါ။ ဂျာမဏီကီးဘုတ်ဆိုရင် de ဆိုတဲ့ ဖိုင်ကို ဝင်ပြင်ပါ။ ကီးဘုတ်အသစ်လုပ်ချင်တာဆိုရင်တော့ လွယ်တာက ရှိပြီးသား ဖိုင်ကို နာမည်အသစ်တခုအနေနဲ့ ကော်ပီကူးလိုက်ပြီး အဲဒီဖိုင်ကို ဝင်ပြင်ပါ။ ဥပမာ မြန်မာစာနဲ့ဆိုင်တဲ့ ကီးဘုတ်အသစ်တခုလုပ်ကြည့်ချင်တာဆိုရင် mm ဖိုင်ကို mm_new ဆိုပြီး အဲဒီ mm_new ဖိုင်မှာ ကိုယ်ပြောင်းချင်တဲ့ ကီးတွေကို ဝင်ပြောင်းရုံပါပဲ။

    kKg ကီးဘုတ် mapping ဖိုင်ကိုတော့ ကျွန်တော်က kkg ဆိုပြီး ဖိုင်နာမည်ပေးထားပါတယ်။ ကီးဘုတ်ရဲ့ နာမည်အမှန်က k(capital K)g၊ ကကြီး၊ ခကွေး၊ ဂငယ် ကို k, K, g နဲ့ ရိုက်တာပါလို့ ဆိုလိုတာပါ။ ဒါပေမဲ့ တကယ်သုံးတဲ့ symbol file (သို့) mapping file ကိုတော့ user တွေ ကော်ပီကူးတဲ့နေရာမှာ အခက်အခဲမဖြစ်အောင်လို့၊ small kကိုပဲ သုံးပြီး kkg ဆိုပြီးလုပ်ထားခဲ့ပါတယ်။ kkg ဖိုင်ရဲ့ Homekey အပိုင်းကို ဘယ်လို mapping လုပ်ထားသလဲဆိုတာကို မြင်သာအောင် အောက်ပါပုံကို သုံးပြီးရှင်းပါမယ်။

example-key-mapping-of-kKg-Homekeys

အထက်က Key Code Naming Convention အပိုင်းမှာ ရှင်းပြခဲ့သလိုပဲ၊ ဒီနေရာမှာ ဟိုက်လိုက် လုပ်ပြထားတဲ့လိုင်းမှာရှိတဲ့ AC08 ကီးက k key ကိုညွှန်းပါတယ်။ k ကို နှိပ်ရင် ကကြီးစာလုံးကို ပေါ်စေချင်လို့ "က" စာလုံးရဲ့ ယူနီကုဒ်နံပါတ် "U1000" ကို ရိုက်ထည့်ထားခဲ့ပါတယ်။ Shift+k (Capital K) ကိုနှိပ်ရင် ခကွေးစာလုံးကို ပေါ်စေချင်လို့ "ခ" စာလုံးရဲ့ယူနီကုဒ် နံပါတ် "U1001" ကိုရိုက်ထည့်ထားခဲ့ပါတယ်။ နောက်ဆက်ရှိနေတဲ့ အင်္ဂလိပ်စာလုံး "k" နဲ့ "K" က မြန်မာစာကီးဘုတ်လုပ်နေတာမို့ အင်္ဂလိပ်စာလုံးတွေကို ထည့်မစဉ်းစားဘူးဆိုရင် ချန်ထားခဲ့လို့ရပါတယ်။ kKg ကီးဘုတ်မှာတော့ "k" စာလုံးကို RALTကီး (Right Alter) နဲ့နှိပ်ရင် ပေါ်အောင်၊ နောက်ပြီး "K" (capital K) စာလုံးကိုတော့ Shift+RALT+k ကိုနှိပ်ရင် ပေါ်အောင် mapping လုပ်ထားခဲ့တာပါ။ ဒီအင်္ဂလိပ်စာလုံး mappingတွေက အသုံးပြုမဲ့သူတွေအတွက်တော့ ဘယ်လောက်ထိအသုံးဝင်မလဲတော့ မပြောတတ်ပါဘူး။ ကျွန်တော်က လက်ရှိအလုပ်လုပ်နေတာကလဲ ဂျပန်မှာဆိုတော့ ကွန်ပြူတာတခုမှာ ကီးဘုတ်လက်ကွက် အနည်းဆုံး ၃ခုကို (အင်္ဂလိပ်၊ ဂျပန်၊ မြန်မာ) အသုံးပြုပါတယ်။ စက်အပေါ်ကို မူတည်ပြီး ကျွန်တော်စိတ်ဝင်စားတဲ့ ဘာသာစကားတွေနဲ့ ပတ်သတ်ပြီး စာရိုက်တာ၊ စာတမ်းပြုစုဖို့အတွက် လေလာတာတွေအတွက် တချို့ ကွန်ပြူတာမှာဆိုရင် ကီးဘုတ်လက်ကွက်က ၁၀ခုကျော်ကို ရှိပါတယ်။ အဲဒီလိုကွန်ပြူတာမျိုးမှာဆိုရင် ဘာသာစကားတခုကနေ နောက်တခုကို ပြောင်းဖို့အတွက်က ဝင်းဒိုးကီးနဲ့ စပေ(စ်)ဘား ကိုသုံးပြီး ပြောင်းရင်တောင် ကိုယ်လိုချင်တဲ့ ဘာသာစကားကို ရောက်ဖို့က တော်တော်လေးကို လက်ဝင်လို့၊ အင်္ဂလိပ်စာ တစ်လုံး၊ နှစ်လုံးလောက်ကိုပဲ ရိုက်ချင်တာဆိုရင် ကီးဘုတ်လက်ကွက်ကို ပြောင်းမနေတော့ပဲ၊ Right Alter key နဲ့ပဲ တွဲရိုက်လိုက်ပါတယ်။ အဲဒီအတွက် ကျွန်တော် kKg ကီးဘုတ်လက်ကွက်မှာ ထည့်ထားခဲ့တာပါ။

  • Modifier key အကြောင်း

    Shift ကီး၊ Control ကီးနဲ့ Alter လို ကီးတွေကို XKB မှာ modifier key လို့ခေါ်ပါတယ်။ အဲဒီ modifier key တွေကို သုံးပြီး ကီးဘုတ်မှာရှိတဲ့ ကီးတွေရဲ့ အလုပ်လုပ်ပုံကို ပြောင်းပေးလို့ရပါတယ်။ လက်တွေ့မှာလဲ ကျွန်တော်တို့ ကောင်းကောင်းသုံးကြပါတယ်။ ဥပမာ Shift ကီးကို သုံးပြီး အင်္ဂလိပ်စာလုံး အကြီး၊ အသေးပြောင်းတာမျိုး၊ Alter ကီးနဲ့ f ကီးကို တွဲနှိပ်ပြီး ပရိုဂရမ်ရဲ့ File menu ကိုလှမ်းခေါ်တာမျိုး၊ Control ကီး၊ Alter ကီး နဲ့ Delete ကီးသုံးခုကို တွဲနှိပ်ပြီး boot လုပ်တဲ့ ကိစ္စမျိုးတွေပါ။

    ဒီ modifier ကီးတွေကို တကယ့်လက်တွေ့သုံးတဲ့ အခါမှာ အဆင်ပိုပြေဖို့အတွက်က XKB မှာက virtual modifier keys တွေအနေနဲ့ သတ်မှတ်လို့ရပါတယ်။ ဒါကြောင့် Shift နဲ့တွဲပြီး အလုပ်လုပ်မဲ့ function အတွက် virtual modifier နာမည်တခုအနေနဲ့ သတ်မှတ်ပြီး သုံးတာမျိုး၊ Control ကီးနဲ့ Shift ကီးတွဲနှိပ်ပြီး လုပ်မဲ့ function ကို virtual modifier နာမည်တခုအနေနဲ့ သတ်မှတ် စသည်ဖြင့် လုပ်ကြလေ့ရှိပါတယ်။ XKB ရဲ့ ဖို(လ်)ဒါတွေဖြစ်ကြတဲ့ compact နဲ့ types ဖို(လ်)ဒါ တွေက အခုရှင်းပြနေတဲ့ modifier ကီးတွေနဲ့ ပတ်သက်ပါတယ်။

  • ကီးတွေရဲ့ level နဲ့ group သတ်မှတ်ချက်

    XKB မှာ ကီးဘုတ်ကီးတွေကို level နဲ့ group တွေအဖြစ် သတ်မှတ်ချက်ဆိုပြီးတော့ရှိပါတယ်။ အဲဒါက ပုံမှန် ကျွန်တော်တို့ သုံးနေကြတဲ့ Shiftကီး ကိုမသုံးပဲရိုက်တာရယ်၊ shiftကီး ကိုသုံးပြီးရိုက်တာရယ်လောက်အတွက်ပဲ စဉ်းစားပြီး ကီးဘုတ်အသစ်တခုရဲ့ လက်ကွက်ကို ဒီဇိုင်းလုပ်မယ်ဆိုရင်တော့ မသိရင်လဲ အိုကေပါတယ်။ ဒါပေမဲ့ ကီးတခုမှာ စာလုံးတွေကို အများကြီး mapping လုပ်ပြီးသုံးမယ်ဆိုရင်တော့ မသိလို့မဖြစ်ပါဘူး။ ဆိုကြပါစို့ ခင်ဗျားစဉ်းစားနေတဲ့ ကီးဘုတ်လက်ကွက်က မြန်မာစာလုံးတွေအပြင် သင်္ချာဖော်မြူလာတွေမှာ သုံးတဲ့ သင်္ချာသင်္ကေတတွေကို ပါ mapping လုပ်ချင်တယ်ဆိုတဲ့ ကိစ္စမျိုးပါ။ ကျွန်တော်သိတာက XKB မှာ ဒီ level, group ကိုသတ်မှတ်ပြီး ကီးတခုကို စာလုံး ၈လုံးအထိ mapping လုပ်နိုင်တယ် ဆိုတာကိုပါ။ level နဲ့ group တွေကို အောက်ပါပုံအတိုင်း ယူဆပြီး စဉ်းစားပါတယ်။

level-and-group-of-XKB
လက်ရှိ kKg ကီးဘုတ်ရဲ့ "k" ကီးကို ဥပမာအနေနဲ့ သုံးပါမယ်။ ဒီနေရာမှာ "ကကြီး" နဲ့ "ခကွေး" ကို Group တခုအနေနဲ့ စဉ်းစားလို့ရပါတယ်။ ထိုနည်းလည်းကောင်းပဲ "small k" နဲ့ "capital K" ကိုလည်း နောက်ထပ် Group တခုအနေနဲ့ စဉ်းစားလို့ရပါတယ်။ နောက်ထပ်တမျိုးက shift key နှိပ်ထားတဲ့ အချိန်နဲ့ shift key ကို မနှိပ်ပဲထားတဲ့ အခြေအနေနဲ့ အုပ်စုခွဲတဲ့ အယူအဆပါ။ အဲဒီလိုကြည့်မယ်ဆိုရင်၊ "ခ" နဲ့ "capital K" ကို level တခုအနေနဲ့ ယူဆပြီး၊ "က" နဲ့ "small k" ကို နောက်ထပ် level တခုအနေနဲ့ ယူဆပြီး အလုပ်လုပ်ခိုင်းလို့ရပါတယ်။ သီအိုရီအရဆိုရင် ကြိုက်သလို mapping လုပ်လို့ရပါတယ်။ သို့သော် အလုပ်လုပ်ရတာအဆင်ပြေဖို့အတွက်၊ နောက်ပြီး စာလုံးတွေအများကြီးကို နေရာချဖို့အတွက် စဉ်းစားရတဲ့အခါမှာ Group တွေ၊ Level တွေအနေနဲ့ ခွဲပြီးနေရာချတာက သင့်တော်ပါတယ်။

လက်တွေ့လုပ်တဲ့ အခါမှာ အရင်ဆုံး modifier key တွေကို သတ်မှတ်ပြီးမှ level နဲ့ group တွေနဲ့ ဘယ်လို ကီးတွေကို တွဲကြမယ် (key combination) ဆိုတာကို စဉ်းစားပါတယ်။ အဲဒီလို သေသေချာချာ စဉ်းစားပြီးရင်တော့ နောက်ဆုံး symbol ဖိုင်တခုမှာ လက်တွေ ပေါ်စေချင်တဲ့ (သို့) ရိုက်ပေးစေချင်တဲ့ စာလုံးတွေကို နေရာချပါမယ်။ မြင်သာအောင် ဥပမာ အနေနဲ့ "k" ကီး (key code: AC08)ကို စာလုံးရှစ်လုံး နေရာချမယ်ဆိုရင်၊ အောက်ဖက်မှာ ပြထားတဲ့ အတိုင်း၊ Group ကို assign လုပ်၊ NoSymbol ဆိုတဲ့ နေရာတွေမှာ ကိုယ်ရိုက်ပေးစေချင်တဲ့ စာလုံးတွေကို ရိုက်ထည့်ရုံပါပဲ။

key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC";
key <AC08> { [   က,   ခ,   k,   K,   NoSymbol,   NoSymbol,   NoSymbol,   NoSymbol] };

ကီးဘုတ်ရဲ့ကီးတွေကို modifier key တွေနဲ့ Groupတွေ၊ Levelတွေ ခွဲပြီး mapping လုပ်ဖို့ဆိုရင် အသေးစိတ်လေ့လာရမဲ့ အပိုင်းတွေနဲ့ လက်တွေ့လုပ်ကြည့်ရမဲ့အပိုင်းတွေ အများကြီးကျန်ပါသေးတယ်။ ဒီနေရာအထိ သေသေချာချာဖတ်ခဲ့ပြီးပြီဆိုရင်တော့ XKB ဆိုတာဘာလဲ၊ ဘယ်လို commandတွေကို သုံးတာလဲနဲ့ Linux OS ပေါ်မှာ keyboard mapping ကို ဘယ်လိုလုပ်တယ်ဆိုတဲ့ သဘောတရား၊ တနည်းအားဖြင့် ပြောရရင် ကွန်ပြူတာကီးဘုတ်ကို ဘယ်လိုဝင်ပြင်လို့ရတယ် ဆိုတာကိုတော့ သိလောက်ပြီလို့ယူဆပါတယ်။ လက်တွေ့ keyboard hacking လုပ်ကြည့်မယ်ဆိုရင်တော့ အင်္ဂလိပ်လိုတော့ ဖတ်ရမှာ ဖြစ်ပေမဲ့ References မှာတင်ပေးထားတဲ့ link တွေက ကောင်းပါတယ်။

  • symbol ဖိုင်အသစ်တခု ပြင်ဆင်ပြီးသွားလို့ ကီးဘုတ်ကို update လုပ်မယ်ဆိုရင်
    $ sudo dpkg-reconfigure xkb-data

  • user အားလုံးအတွက် မဟုတ်ပဲ၊ user တစ်ယောက်ချင်းစီအတွက် ကီးဘုတ်လက်ကွက် ကို ပြင်မယ်ဆိုရင် $HOME/.xkb/ ဖိုလ်ဒါ (သို့) $HOME/.config/xkb/ ဖိုလ်ဒါ အောက်မှာ xkb အတွက် လိုအပ်တဲ့ ဖိုလ်ဒါတွေဖြစ်တဲ့ rules, symbols စတဲ့ ဖိုလ်ဒါတွေဆောက်ထားပြီး၊ ကိုယ်အသစ်လုပ်ထားတဲ့ rule ဖိုင်တွေ၊ လက်ကွက်ဖိုင်တွေကို ကော်ပီကူထည့်ထားပြီး ပြင်ဆင်ပေးလို့ရပါတယ်။

ရည်ရွယ်ထားသော to-do list

  • Preparing kKg keyboard for Windows OS
  • Making formal user-study when I get a chance
  • Release kKg signwriting keyboard for Myanmar signers (Finished!)

မှီငြမ်း (Reference)

ကျွန်တော် က kKgကီးဘုတ်ကို ဒီဇိုင်းလုပ်စဉ်မှာ အဓိက မှီငြမ်းခဲ့တာကတော့ Linux OS မှာပါတဲ့ XKB configuration command တခုချင်းစီရဲ့ man page တွေနဲ့ An Unreliable Guide to XKB Configuration ပါ။ တခြားလင့်(ခ်)တွေကတော့ ဒီGitHub မှာkKgကို မတင်ခင်မှာ မြန်မာလိုရှင်းပြဖို့အတွက် အင်တာနက်မှာ ရှာဖွေကြည့်ရင်းနဲ့ ကျွန်တော့်လိုပဲ ကိုယ်တိုင် ကီးဘုတ်အသစ် လုပ်ကြည့်ချင်တဲ့ လူပျင်းများအတွက် အသုံးဝင်မယ်လို့ယူဆတဲ့ လင့်(ခ်)တွေပါ။

  1. XKB Homepage: https://www.x.org/wiki/XKB/
  2. An Unreliable Guide to XKB Configuration: https://www.charvolant.org/doug/xkb/html/xkb.html
  3. The X Keyboard Extension: https://www.x.org/releases/X11R7.7/doc/libX11/XKB/xkblib.html#Xkb_Implementation
  4. Creating custom keyboard layouts for X11 using XKB: http://michal.kosmulski.org/computing/articles/custom-keyboard-layouts-xkb.html
  5. Custom keyboard layout definitions: https://help.ubuntu.com/community/Custom%20keyboard%20layout%20definitions
  6. XkbKeyTypesForCoreSymbols (3) - Linux Man Page: https://www.systutorials.com/docs/linux/man/3-XkbKeyTypesForCoreSymbols/
  7. Ivan Pascal's X Keyboard Extension: http://pascal.tsu.ru/en/xkb/
  8. The X Keyboard Extension: Protocol Specification: https://www.x.org/docs/XKB/XKBproto.pdf
  9. Extending the X Keyboard Map with XKB: http://madduck.net/docs/extending-xkb/
  10. evdev protocol: https://who-t.blogspot.jp/2016/09/understanding-evdev.html
  11. Keyboard Input-Output: https://unix.stackexchange.com/questions/116629/how-do-keyboard-input-and-text-output-work
  12. A Readable Reconstruction of The X Keyboard Extension Library Specification: https://grahamwideman.wikispaces.com/file/view/XKeyboardExtensionLib_GWToWord-20130613-b6.pdf