এক্সমোডম্যাপের কী কী কোড পাবেন?


76

আমি ডেল এল 100 কীবোর্ডের xmodmapরিম্যাপ Alt/ Superকীগুলি ব্যবহার করার চেষ্টা করছি এবং কী-কোডগুলি পেতে সমস্যা হচ্ছে।

উদাহরণস্বরূপ, ব্যবহার xevকরে আমাকে কীকোড দেয় নাAlt

FocusOut event, serial 36, synthetic NO, window 0x4a00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 36, synthetic NO, window 0x4a00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 36, synthetic NO, window 0x0,
    keys:  122 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

জন্য Right Superকী, xevএবং showkey- বিভিন্ন keycodes দিতে 134এবং 126যথাক্রমে।

এই কীকোডগুলি নিয়ে কী চলছে?

আমি কীকোডগুলি পেয়েছি showkey -kএবং xmodmapনীচে ফাইলটি ব্যবহার করার চেষ্টা করেছি , কিন্তু এটি একটি অদ্ভুত মানচিত্র দিয়েছে যা bকী পুনরায় টিকে আছে:

clear Mod1
clear Control
keycode 125 = Meta_L
keycode 126 = Meta_R
keycode 58 = Control_L
keycode 56 = Control_L
keycode 100 = Control_R
add Control = Control_L Control_R
add Mod1 = Meta_L Meta_R

XUbuntu 14.04 এ, Alt_L গুলি চালানো নয় (তবে Alt_R ভাল আছে) নিয়ে আমার একই সমস্যা রয়েছে। আপনি কোন সিস্টেমটি ব্যবহার করছেন?
পল দাম

উত্তর:


54

আপনার কীবোর্ড এবং প্রক্রিয়াটির মধ্যে প্রচুর প্লেয়ার রয়েছে যা শেষ পর্যন্ত কীবোর্ড ইভেন্টটি পরিচালনা করে। ল্যান্ডস্কেপের প্রধান অংশগুলির মধ্যে রয়েছে যে এক্স সিস্টেমটির নিজস্ব কীবোর্ড-হ্যান্ডলিং স্তর রয়েছে এবং এক্স আপনার লিনাক্স বেস সিস্টেমের চেয়ে কীগুলির সাথে বিভিন্ন "কীকোডস" যুক্ত করে। showkeyকমান্ড আপনাকে লিনাক্স-বেস-সিস্টেম শ্রেণীর বা সম্প্রদায়ের ভাষা মধ্যে keycodes দেখানো হয়। আপনার জন্য xmodmapএক্স কীকোডগুলি দরকার যা সেগুলি xevপ্রদর্শিত হয়। যতক্ষণ আপনি এক্সে কাজ করার পরিকল্পনা করছেন এবং আপনার কী পুনর্নির্মাণের কাজটি করবেন xmodmap, তারপরে, উপেক্ষা করুন showkeysএবং কেবল যা xevবলে তা শোনেন ।

আপনার xevআউটপুটটিতে আপনি যা দেখতে চান তা হ'ল এই জাতীয় ব্লক:

KeyPress event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417474, (340,373), root:(342,393),
    state 0x8, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

xevপ্রচুর আউটপুট উত্পন্ন করে, বিশেষত যখন আপনি নিজের মাউসটি সরান। আপনি যে আউটপুটটি সন্ধান করছেন তা পেতে আপনাকে কিছুক্ষণ পিছনে স্ক্রোল করতে হতে পারে। পূর্ববর্তী আউটপুটে, আমরা দেখতে পাচ্ছি যে keysym Alt_Lএক্সটি কী কোডের সাথে যুক্ত 64


3
আপনার সমস্যাটি হ'ল আমি উইন্ডোজ কীতে কীপ্রেস ইভেন্টটি পাই না। আমি 3 টি ভিন্ন কীবোর্ড এবং একই ফলাফল চেষ্টা করেছি। এক্স থেকে আমি কেবল ফোকাসআউট, ফোকাসইন এবং উপরের মতামত কীম্যাপনোটাইফাই পেয়েছি। যাইহোক, আমি জিনোম ম্যানেজারের মাধ্যমে শর্টকাট সেটআপ করতে পারি এবং এটি উইন্ডোজ কীটিকে "Mod4" হিসাবে দেখবে
ইয়ারোস্লাভ

মোড 4 হিসাবে ডান উইন্ডোজ কী প্রতিবেদনগুলি, আল্ট হিসাবে বাম উইন্ডোজ কী প্রতিবেদনগুলি ... যা বিভ্রান্তিকর কারণ আমার এক্সমোডম্যাপে আমার কাছে "আল্ট" বিভাগও নেই।
ইয়ারোস্লাভ বুলাটোভ

আল্টের জন্য Mod1 চেষ্টা করুন।
dubiousjim

2
@ ইয়ারোস্লাভ বুলাটোভ মনে হচ্ছে আপনার ডেস্কটপের পরিবেশ কীটি খাচ্ছে (সম্ভবত এটির মূল মেনু আনতে হবে?)
ডার্বার্ট

3
Xev আপনাকে প্রদত্ত ইভেন্টগুলিকে ফিল্টার করতে পারে। এই ক্ষেত্রে xev -event keyboardগোলমাল অধিকাংশ পরিত্রাণ করার জন্য যথেষ্ট হবে।
ফ্রেড্রিক ওয়েেন্ড

24

এক্স কাজ করা উচিত

অদ্ভুত, আমার xev Alt এর জন্য একটি কীপ্রেস এবং কী-রিরিজ ইভেন্ট দেয় (এবং উইন্ডোজ কীটির জন্য, এখানে "সুপার" নামে পরিচিত):

KeyPress event, serial 40, synthetic NO, window 0xae00001,
    root 0x2ca, subw 0x0, time 595467354, (98,77), root:(102,443),
    state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0xae00001,
    root 0x2ca, subw 0x0, time 595467453, (98,77), root:(102,443),
    state 0x18, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

এবং ডান হাত এক:

KeyPress event, serial 40, synthetic NO, window 0xae00001,
    root 0x2ca, subw 0x0, time 595572876, (75,33), root:(79,399),
    state 0x10, keycode 108 (keysym 0xffea, Alt_R), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0xae00001,
    root 0x2ca, subw 0x0, time 595572972, (75,33), root:(79,399),
    state 0x18, keycode 108 (keysym 0xffea, Alt_R), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

আমি দুটি সম্ভাবনা দেখতে পাচ্ছি:

  1. অন্য কিছু হ'ল পুরোপুরি কীপ্রেস খাচ্ছে বা উইন্ডো টিপে আপনার উপর চাপ দিচ্ছে। অন্যথায় ফাঁকা এক্স সার্ভারে xev চালানোর চেষ্টা করুন (উদাহরণস্বরূপ, কেবল চালান xinit -- :1, যা আপনাকে কেবলমাত্র একটি xterm দিয়ে একটি X সার্ভার পাওয়া উচিত even এমনকি উইন্ডো ম্যানেজারও চলবে না the xterm প্রস্থানটি সেশনটি বন্ধ করে দেবে)।
  2. আপনি কেবলমাত্র দুটি ঘটনাকেই বাদ দিয়েছিলেন যা এক্সেভ বলেছে।

একটি সহজ উপায়, যদি আপনি কী নামটি জানেন

আর একটি সম্ভাবনা: xmodmap থেকে কেবল কী কোডগুলি পান:

anthony@Zia:~$ xmodmap -pk | grep -i alt
     64         0xffe9 (Alt_L)  0xffe7 (Meta_L) 0xffe9 (Alt_L)  0xffe7 (Meta_L)
    108         0xffea (Alt_R)  0xffe8 (Meta_R) 0xffea (Alt_R)  0xffe8 (Meta_R)
    204         0x0000 (NoSymbol)       0xffe9 (Alt_L)  0x0000 (NoSymbol)       0xffe9 (Alt_L)
anthony@Zia:~$ xmodmap -pk | grep -i super
    133         0xffeb (Super_L)        0x0000 (NoSymbol)       0xffeb (Super_L)
    134         0xffec (Super_R)        0x0000 (NoSymbol)       0xffec (Super_R)
    206         0x0000 (NoSymbol)       0xffeb (Super_L)        0x0000 (NoSymbol)       0xffeb (Super_L)

আবার 64 এবং 108 রয়েছে। xmodmap -pmআপনাকে কেবলমাত্র সংশোধনকারী মানচিত্রটি প্রদর্শিত হবে, যা আপনাকে সংখ্যাগুলিও দেয় (যদিও এবার হেক্সে)।


15

আমি আপনার প্রশ্নের তিনটি সমস্যা "সনাক্ত" করেছি:

  1. কী xevএবং showkeyকীগুলির জন্য বিভিন্ন কীকোডগুলি প্রতিবেদন করবেন ?
  2. কেন xevদেখাবেন না Altসঠিকভাবে চাপা হচ্ছে?
  3. কিভাবে অদলবদল Altএবং Win?

সংক্রান্ত প্রথম প্রশ্ন: এই দিন, যেখানে এক্স কীবোর্ড "ড্রাইভার" সত্যিই হার্ডওয়্যার ড্রাইভ না, এটি শুধু পাস-থ্রু পারে এক্স গোড়া থেকে কার্নেল থেকে keycodes, কিন্তু এটা না। এটি পাস করার আগে কি-কোডে 8 টি যুক্ত করে।

দ্বিতীয়: আপনার এক্স সেশনের কিছু Altঘটনাটি দখল করছে । অন্যান্য উত্তরগুলি ইতিমধ্যে এটি কভার করে। (অর্থাৎ xevআপনি যে ইভেন্টটি দেখতে চান সেটি পান না)। অপরাধী আপনার উইন্ডো ম্যানেজারের সাথে সম্পর্কিত হতে পারে। আরও নগ্ন এক্স সেশন চেষ্টা করুন।

তৃতীয়: ব্যবহার করবেন না xmodmap। এটি এক দশক ধরে পুরানো। নতুন ছেলেরা হলেন এক্সকেবি এবং এর সরঞ্জাম setxkbmap

$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     us
variant:    altgr-intl
options:    caps:backspace

অদলবদলের জন্য Altএবং Winইতিমধ্যে এক্সকেবিতে একটি বিকল্প প্রস্তুত রয়েছে। কেবল এটি যুক্ত করুন:

$ setxkbmap -option altwin:swap_alt_win
$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     us
variant:    altgr-intl
options:    altwin:swap_alt_win,caps:backspace

আপনি কীভাবে setxkbmapপরিবর্তনটি স্থায়ী করবেন?
স্টিভ কেহলেট

এতে পরিবর্তন যুক্ত করুন ~/.xinitrc
ম্যাথিয়াস ব্রাউন

11

রুট হিসাবে, চালান:

showkey -s

... আপনার রহস্য কীটির জন্য স্ক্যানকোডটি কী তা দেখতে। আমি এরকম কিছু পেয়েছি:

# showkey -s
kb mode was RAW
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...

0xc6 
0x46 0xc6 
0xc6 
0x46 0xc6 
0x46 

কেন নিশ্চিত হয় যে কেন এটি প্রদর্শিত হয় যে একটি কী দুটি স্ক্যানকোড উত্পন্ন করে। এটি কোনও কীডাউন / কীআপ জিনিস নয়, যতটা কাছাকাছি আমি প্যাটার্নটি থেকে বলতে পারি। সতর্কতা নোট করুন, যাতে আপনি এটি একক ব্যবহারকারী মোডে চালাতে চাইতে পারেন।

আমি অনুমান করেছি যে 0x46টি আমার স্ক্যানকোড।

এরপরে, একটি অব্যবহৃত কীকোড এটি সহ সন্ধান করুন:

xmodmap -pke | less

এখানে আপনি দেখতে পাচ্ছেন কীডকোড 97 আমার সিস্টেমে অব্যবহৃত রয়েছে:

keycode  94 = less greater less greater bar brokenbar
keycode  95 = F11 XF86Switch_VT_11 F11 XF86Switch_VT_11
keycode  96 = F12 XF86Switch_VT_12 F12 XF86Switch_VT_12
keycode  97 =
keycode  98 = Katakana NoSymbol Katakana
keycode  99 = Hiragana NoSymbol Hiragana

কীকোড এক্স ব্যবহার করে এবং কার্নেলটি ব্যবহার করা কীকোডগুলি "reasonsতিহাসিক কারণে" 8 টি অফ অফ। সুতরাং 97 - 8 = 89 নিন এবং সেটকিওডস কমান্ডের সাথে 89 টি ব্যবহার করুন (আবার রুট হিসাবে):

# setkeycodes 46 89

এবং আপনি সেট করা উচিত। এক্সের সাথে নিশ্চিত করুন যে আপনি 97৯-এর কী-কোড সহ একটি কিপ্রেস ইভেন্ট পাচ্ছেন (

মনে রাখবেন যে 'সেটকিওডস' একটি রিবুট বেঁচে থাকবে না, তাই আপনাকে এটি আপনার আরআর স্ক্রিপ্টগুলিতে যুক্ত করতে হবে (যেমন। /Etc/rc.local এ)


1
"Historicalতিহাসিক কারণে 8 দ্বারা বাই" সম্পর্কে আপনার কোনও পয়েন্টার আছে?
রবার্ট সিমার

আমি আপনার উত্তরটি কোনও ফাংশন কীতে (বিশেষত F9) ক্যাপস-লকটিতে ব্যবহার করেছি। এটি আমাকে tmux-এ প্রিফিক্স কী হিসাবে F9 ব্যবহার করতে দেয়। ধন্যবাদ।
রেমন্ড ক্রোকার

@RobertSiemer tldp.org/HOWTO/Keyboard-and-Console-HOWTO-15.html "প্রায়ই এক্স সংখ্যা লিনাক্স সংখ্যার চেয়ে 8 বেশি হতে হবে।" আমার সাথে "historicalতিহাসিক" শব্দটি অন্য ম্যানপেজ থেকে এসেছে।
গ্রেগ বেল

11

আমি নিজের জন্য এটি সমাধান করার চেষ্টা করছিলাম এবং আমি এটি সন্ধান করেছিলাম।

মূল সমস্যাটি হ'ল আপনি কীপ্রেসের জন্য ইভেন্টটি পাচ্ছেন না। আপনি যে লগ পোস্ট করেছেন তার দিকে তাকানো স্পষ্ট।

FocusOut event, serial 36, synthetic NO, window 0x4a00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 36, synthetic NO, window 0x4a00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 36, synthetic NO, window 0x0,
    keys:  122 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

আপনি দেখতে পারেন Focus{In,Out}ঘটনা একটি আছে modeএর Notify{Grab,Ungrab}। এটি নির্দেশ করে যে একটি কী অন্য প্রক্রিয়া দ্বারা পরিচালিত হয়েছিল (সম্ভবত একটি শর্টকাট / কী-বাইন্ডিং অ্যাপ্লিকেশন)।

আমার ক্ষেত্রে এটি xbindkeys ছিল, তবে আপনি যদি ডেস্কটপ পরিবেশ ব্যবহার করেন তবে তাদের সম্ভবত একটি কী-বাইন্ডিং সিস্টেম রয়েছে। এই ইভেন্টগুলি xev দেখতে আপনাকে অন্য প্রোগ্রামটি বন্ধ / অক্ষম করতে হবে।

কী প্রোগ্রাম কী ইভেন্টগুলি চুরি করছে তা আপনি যদি নির্ধারণ করতে না পারেন তবে সেরা সমাধানটি এক্স এক্স সেশনটি চালা না করেই শুরু করা। ডিসপ্লেতে আরও একটি এক্স সেশন শুরু করতে নিম্নলিখিত কমান্ডটি চালান :1, যদি ইতিমধ্যে এটি নেওয়া হয় তবে শেষে সংখ্যাটি বাড়ান। আপনি অবশ্যই আপনার পছন্দসই বা আপনার সিস্টেমে ইনস্টল করে যা টার্মিনাল পরিবর্তন করতে পারেন।

xinit /usr/bin/xterm -- :1

তারপরে xevআবার দৌড়াও । এটি আপনাকে অন্যান্য প্রোগ্রাম দ্বারা ক্যাপচার না করে ফলাফল দেয়। নোট করুন যে উইন্ডো ম্যানেজারটি শুরু হয় তা হোভার-ফোকাস, সুতরাং কীগুলি ক্যাপচার করার জন্য আপনাকে আপনার কার্সারটি xev উইন্ডোর উপরে রাখতে হবে।


সন্দেহভাজনদের দ্বারা এই দুর্দান্ত উত্তরে যেমন বলা হয়েছিল , কীডকোডটি আলাদা কারণ xev এবং কার্নেলের মধ্যে প্রচুর স্তর রয়েছে।


4

Alt_LXUbuntu 14.04 এ অদৃশ্য হওয়ার ক্ষেত্রে আমার একই সমস্যা Alt_Rছিল (ভাল ছিল)। অনেকগুলি খেলার পরে, আমি লক্ষ্য করেছি যে showkeyকীস্ট্রোকটি রেকর্ড করেছে, তবে xevতা হয়নি --- এটি উইন্ডো সিস্টেমে কিছু হতে হয়েছিল। আমি সমস্ত "উইন্ডো ম্যানেজার" এবং "উইন্ডো ম্যানেজার টুইটস" সেটিংস স্ক্রোল করেছি এবং কিছুই পাইনি। অবশেষে, আমি "সেটিংস সম্পাদক" Alt_L-র কীবোর্ড শর্টকাটগুলির তালিকাতে একটি বিপথগামী পেয়েছি xfce4-keyboard-shortcuts। আমি "রিসেট" করেছি, এবং আমার Alt_Lপিছনে আছে! স্ট্রে Alt_Lশর্টকাট "সেটিংস সম্পাদক" ব্যতীত অন্য কোথাও প্রদর্শিত হয়নি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.