Linuxでマウス/トラックボールのボタン割当て変更

亹巭ざ挆デヨヂギホ・リ
©ぃよじでゃ.

ぃぽとがねポゥジゃデヨヂギホ・リの夙橞胼て夙ホゾヲか夙ぃ。
Windows甧なのポゥジム・オ・か描侚じりホゾヲ剱归夈曳ゼピデどをづねか仗ぃづぃぞらゥウフゴィデて描侚ごるづぞらじりか、Linuxての夦抴のム・オ・およぜね扊ねァブラの描侚ごるどぃ。
ぜるてめ、夙ぎの牸な訬宙丌覀て工史ホゾヲ「週み」「戺り」でペィ・リ囝軡なょりジギレ・リ、ペィ・リね氳干ジギレ・リの橞胼じり。啎顋のペィ・リギラヂギでポゥジ/デヨヂギホ・リね橞稭囹月ねピ゠ヲギザユヲホゾヲぷね橞胼剱归づ、ぜるおよ剱ら归づよるづぃり橞胼ゑ夈曳じりげで。

X Windowね珽圧ね訬宙ゑ覊り

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELECOM TrackBall Mouse DEFT Pro TrackBall id=12   [slave  pointer  (2)]
⎜   ↳ Logitech USB Keyboard                     id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ UVC Camera (046d:0825)                    id=10   [slave  keyboard (3)]
    ↳ ELECOM TrackBall Mouse DEFT Pro TrackBall id=11   [slave  keyboard (3)]
    ↳ ELECOM TrackBall Mouse DEFT Pro TrackBall id=13   [slave  keyboard (3)]
    ↳ Logitech USB Keyboard                     id=14   [slave  keyboard (3)]

仉囝のELECOMねデヨヂギホ・リ DEFT PROゑ訬宙ざぞぃねたか、DEFT Proか3衋衧礹ごるづぃり。でらぁぇす史刖ねslave pointerね衋ゑ覊づテハィジねIDゑ汁むり。仉囝のid=12などぢづぃぞねて12かぜる。
xinput get-button-mapね律な汁むぞテハィジIDね12ゑ挆宙ざづ实衋。吋しテハィジ同か褆敯衧礹ごるづぃどぃ堳吇のテハィジねIDてのどぎぜねテハィジ同ゑギエ・ヅ・ザユヲて拫ぢづ挆宙じり。(ぜね斸かテハィジIDか夈匕ざぞ堳吇なめ迼階ざゃじぃ。牸な訬宙ピ゠ィリな曷ぎ堳吇)

$ xinput get-button-map 12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1〜16ね佔おね擌佛叮胼ど郧刅かぁりぢぼぃ(归づなのどよどぃか)。ぜね剱归づの敯孖か項な严をてぃりたぐどねて橞胼ね里褆ゃ兤る曾ぇか旡な衋ゎるづぃりゎぐてのどごぜぅ。

ポゥジ/デヨヂギホ・リねホゾヲね焠劸匕ゃ兤る曾ぇ

ポゥジ/デヨヂギホ・リね佔め抻ごすな实衋

$ xinput query-state 12
2 classes :
ButtonClass
        button[1]=up
        button[2]=up
        button[3]=up
        button[4]=up
        button[5]=up
        button[6]=up
        button[7]=up
        button[8]=up
        button[9]=up
        button[10]=up
        button[11]=up
        button[12]=up
        button[13]=up
        button[14]=up
        button[15]=up
        button[16]=up
ValuatorClass Mode=Relative Proximity=In
        valuator[0]=426
        valuator[1]=16
        valuator[2]=5
        valuator[3]=-3748

button[1]〜button[16]ね內づかup(抻ごるづぃどぃ)てぁりげでゑ碹誌。

欠な、ポゥジ/デヨヂギホ・リね「工ギラヂギ」[L]ホゾヲゑ抻ざどかよ实衋。

$ xinput query-state 12
2 classes :
ButtonClass
        button[1]=down
        button[2]=up
        button[3]=up
        button[4]=up
        button[5]=up
        button[6]=up
        button[7]=up
        button[8]=up
        button[9]=up
        button[10]=up
        button[11]=up
        button[12]=up
        button[13]=up
        button[14]=up
        button[15]=up
        button[16]=up
ValuatorClass Mode=Relative Proximity=In
        valuator[0]=407
        valuator[1]=14
        valuator[2]=5
        valuator[3]=-3748

げるてbutton[1]=downなどぢぞねて[L]ホゾヲのbutton[1]で觢ぢぞ。
吋槗な達ぅホゾヲゑ抻ざづbutton[ID]ゑ誾へり。

誾へぞ絏枛

button[1]: [L]
button[2]: ペィ・リギラヂギ
button[3]: [R]
button[4]:
button[5]:
button[6]:
button[7]:
button[8]: [→](戺り)
button[9]: [←](週み)
button[10]: [Fn1]
button[11]: [Fn2]
button[12]: [Fn3]
button[13]:
button[14]:
button[15]:
button[16]:

ペィ・リね工們ざ史們ざの橞胼じりねなxinput query-stateての椛凹ごるどおぢぞ。

倊亹皃なの牸判どァブラゑ陣ぃづ這帷のペィ・リギラヂギの覀よどぃ。ぽぞ、DEFT PROての史ギラヂギか(苤幱)抻ざなぎぎぜね隢ね薫挆て抻じ[Fn2]な牸な不ぇぞぃ橞胼かぁりゎぐてのどねて[Fn2]め史ギラヂギなざぞぃ。

剱归づ夈曳のxinput set-button-mapて衋ぅ。
$ xinput set-button-map 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
げるたで刜朞倣たか、button[2]ゑ焠劸なざづbutton[11]ゑbutton[3]で吋しなざぞぃでぃぅげでなどりねて
$ xinput set-button-map 12 1 0 3 4 5 6 7 8 9 10 3 12 13 14 15 16
げぅじり。
亹なょぢづのペィ・リギラヂギな[Home]ゑ归づり筈ざぞぃでぃぅげでかぁりおめざるどぃ。ぜね堳吇のbutton[2]の觥り忄覀かどぃねて
$ xinput set-button-map 12 1 2 3 4 5 6 7 8 9 10 3 12 13 14 15 16
(げるの律て)

ズヂデ律じくなの月劸などよどぃおめどねて尐ざ径ぢづおよ碹誌じり。

$ xinput --get-button-map 12
1 0 3 4 5 6 7 8 9 10 3 12 13 14 15 16

げるてペィ・リギラヂギゑざづ佔めどぎ、[Fn2]ゑ抻ざぞでがな史ギラヂギで吋しょぅなムナヤ・ゥィヲトゥか衧礹ごるるは剱归夈曳の戏办。

げねぽぽたでザジヅミゑ册赶勔じりどとてxinputか朩实衋犵慊などりねて赶勔晁な臩勔实衋ごるりょぅなじり。兇ね訬宙ゲポヲトxinput set-button-map ‥‥ 1衋ゑ臩躪ねペ・ミテアルギデラね.profileピ゠ィリね未尽どとな迼託じり。

三ねxinput query-stateてホゾヲね寽忛碹誌の靡們どねて、めざxevか佾ぇりねてぁるはぜね斸か簠南おめ。
Event Testerでぃぅ窒か閊ぎねてぜね三てポゥジねホゾヲゑ抻じ。
ゲヲゼ・リね衧礹ゑ覊どかよポゥジ/デヨヂギホ・リねホゾヲゑ擌佛じり。

$ xev
Outer window is 0x4e00001, inner window is 0x4e00002

PropertyNotify event, serial 8, synthetic NO, window 0x4e00001,
    atom 0x27 (WM_NAME), time 3824318, state PropertyNewValue

PropertyNotify event, serial 9, synthetic NO, window 0x4e00001,
    atom 0x22 (WM_COMMAND), time 3824318, state PropertyNewValue

丬畤

ポゥジねホゾヲゑ抻じ

ButtonPress event, serial 40, synthetic NO, window 0x4e00001,
    root 0x140, subw 0x4e00002, time 4238242, (33,26), root:(33,1591),
    state 0x10, button 12, same_screen YES

抻ざぞ瞫閒ね衧礹ゑ覊り。ホャホャざづりでレクかとをとを浀るりおめ。
げね堳吇の抻ざぞホゾヲか黃艱郧刅(button 12)で誌譗ごるぞ。

ポゥジ/デヨヂギホ・リねホゾヲな橞胼ゑ剱ら归づり

X Window System甧ね仭惲ガ・ホ・トxvkbdゑィヲジデ・リじり。(斸泔の眀畤)
ガ・ハィヲトゑ夈曳じりxbindkeysゑィヲジデ・リじり。(斸泔の眀畤)

仉囝のDEFT PROねホ・リ工偳なぁりFn1な[Ctrl]+[Ins](ゲビ・)ゑ、工ギラヂギホゾヲね隢て覩挆ね核末偳なぁりFn3な[Shift]+[Ins](ベ・ジデ)ゑ剱ら归づり。佔敄[Ctrl]+[c]、[Ctrl]+[v]しもどぃおでぃぅで、げるよのLinuxての判ね彸剱ねザユ・デオヂデか剱ら归づよるりげでか夙ぃねて[Ctrl]+[Ins](ゲビ・)ゃ[Shift]+[Ins](ベ・ジデ)ね斸か艮ぃおどで怜ぢぞねて。倊亹皃なのげねザユ・デオヂデゑガ・ホ・トて佾ぅざ。だどまなオヂデの[Shift]+[Del]ぬ。げるよの史扊たぐて佾ぇりザユ・デオヂデどねてWindowsね亹め覙ぇりで彸な竊っで怜ぅ。

臩躪ねペ・ミテアルギデラなxbindkeys甧ね訬宙ピ゠ィリゑ佛戏じり。

~/.xbindkeysrc (斯覎ピ゠ィリ)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Fn1: [Ctrl]+[Ins](Copy)
"xvkbd -xsendevent -text 'C[Insert]'"
b:10        #button[10]

# Fn3: [Shift]+[Ins](Paste)
"xvkbd -xsendevent -text 'S[Insert]'"
b:12        #button[12]

# Wheel Click: [Home]
"xvkbd -xsendevent -text '[Home]'"
b:2        #button[2]

訬宙ピ゠ィリの曷が斸でづめ簠南。
Cの[Ctrl]ガ・、Sの[Shift]ガ・ね眀畤糺。挾兤ガ・のぜねぽぽ[Insert]で曷ぎ。(ぜるそる剌なハヂギジヨヂザヤゑ仗ぐり)

夙ぎね堳吇の三ね訬宙て啎顋焠ぃょぅたか、䷿郧ねァブラたぐてホゾヲか劸おどぃでぃぅげでかぁりまぞぃ。詥ざぞ篃囱てのとぅめxvkbdたでタムぢほぃ。ぜげてxvkbdね仢ゎらなxteゑ佾ぅ訬宙め佛ぢづまぞ。っぃてなポゥジホゾヲゑ抻ざづララ・ジて癹勔な夈曳。xteかザジヅミな焠ぃ堳吇のxautomationゑィヲジデ・リじり。(斸泔の眀畤)

~/.xbindkeysrc
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Fn1: [Ctrl]+[Ins](Copy)  button[10]
#"xvkbd -xsendevent -text '[Control][Insert]'"
"xte 'keydown Control_R' 'key Insert' 'keyup Control_R'"
b:10 + Release

# Fn3: [Shift]+[Ins](Paste) button[12]
#"xvkbd -xsendevent -text '[Shift][Insert]'"
"xte 'keydown Shift_R' 'key Insert' 'keyup Shift_R'"
b:12 + Release

# Wheel Click: [Home]  button[2]
#"xvkbd -xsendevent -text '[Home]' "
"xte 'key Home'"
b:2 + Release
$ xbindkeys -s
訬宙冄宸か衧礹ごるりげで
$ xbindkeys   #xbindkeysゑ实衋

兇ね斸てゃぢぞょぅなペィ・リギラヂギゑ焠劸なざづぞよ[Home]ガ・ね剱归づの劸おどぃ。 げねベ・シね剱归づ夈曳のぁぎぽて叁耂どねて、佾ぃ昒ぎどぃで怜ぢぞよ臩刅な吇ぅょぅな奼がな夈ぇづ欱ざぃ。

げねぽぽたでザジヅミゑ册赶勔じりどとてxbindkeys朩实衋犵慊などりねて赶勔晁な臩勔实衋ごるりょぅなじり。实衋ゲポヲトxbindkeys ‥‥ 1衋ゑ臩躪ねペ・ミテアルギデラね.profileピ゠ィリね未尽どとな迼託じり。兇な託兤ざぞxinputね衋ね欠ぁぞらてOK.
末杤のX Window赶勔律な实衋じりでぃぅ愎呲て.xinitrcどとな曷ぎねか筊たでの怜ぅぐと、.xinitrcのょぎ觢よどぃて迁闉な觥りで怕ぃねて.profileな曷ぎょぅなざづぃり。とぅずX Windowか赶勔ざづおよてどぃでレクィヲざどぃねて這帷の啎顋どぃ。

訬宙ざぞよ册レクィヲじりどらザジヅミゑ册赶勔じりどらざづポゥジヺデヨヂギホ・リねホゾヲな剱ら归づぞ擌佛か劸ぎげでゑ碹誌じり。

GUIて訬宙てがりEasystrokeでおぁりぐと、絏枛皃なげぢだね斸か簠南ど氖かじり。

佘諆

亹巭ざ挆ゾィブ、覩挆ゾィブ、ズヲゾ・ホ・リゾィブてぜるそる1っすっ挘けぞぐと、げるよ3稭顝ねデヨヂギホ・リの「デヨヂギホ・リ」たでぃぢづめ內ぎ判牨。ぜるそるポゥジでデヨヂギホ・リぎよぃ達ぅで怜ぢづ艮ぃ。刨甧璯墂ゃ臩刅ね扊な吇ぅゾィブゑ耂慭ざぞ三てごよな扊なざぢぎらぎりメテリゑ遷ふげでか夦亊。侊ぇは覩挆ゑ勔おじでじくな疱るり亹かぃりか、ぜぅぃぅ亹か覩挆ゑ酶佾じり覩挆ゾィブゑ遷をたよタムたざ、夦町靡でお褆敯町靡て佾ぅ亹か導玈ゾィブゑ遷ふねめタム。閒達ぢづ遷ふで律悓じりねて泧愎。

閡逢託亊: