এক্সকেবি দিয়ে একটি নতুন সংশোধক কী ঘোষণা করুন


12

আমি একহাতে কীবোর্ড বিন্যাস তৈরি করার চেষ্টা করছি এবং Hyperযখন আমি কিছু কী টিপবো তখন বিশেষ কী তৈরি করতে ব্যবহার করতে চাই ।

উদাহরণস্বরূপ, যখন আমি টিপব Hyper_Lএবং B, আমি এক্সকেবি উত্পাদন করতে চাই XF86AudioRaiseVolume

সম্পর্কিত প্রাসঙ্গিক অংশগুলি custom_2.kbd ( http://pastebin.com/gm8cggn3 এ সম্পূর্ণ কোড ):

xkb_keycodes {
    <K_36> = 54;        // b B XF86AudioRaiseVolume
    <K_85> = 133;       // Hyper_L
};

xkb_symbols {
    key <K_36> { type = "HYPER_LEVEL", [ b, B, XF86AudioRaiseVolume ] };
    key <K_85> { type = "ONE_LEVEL", [ Hyper_L ] };
};

xkb_compatibility {
    interpret Hyper_L { action = SetMods(modifiers=Hyper); };
};


xkb_types {
type "HYPER_LEVEL" {
    modifiers= Shift+Hyper;
    map[Shift]= Level2;
    map[Hyper]= Level3;
    map[Shift+Hyper]= Level3;
};
};

এটি আমার কাছে ঠিক মনে হয় তবে আমি যখন এটি চেষ্টা করি:

~$ xkbcomp custom_2.kbd $DISPLAY
Error:            Identifier "Hyper" of type int is unknown
Error:            Key type mask field must be a modifier mask
                  Key type definition ignored
Warning:          Map entry for unused modifiers in HYPER_LEVEL
                  Using none instead of Shift
Error:            Identifier "Hyper" of type int is unknown
Error:            The key type map entry field must be a modifier mask
                  Ignoring illegal assignment in HYPER_LEVEL
Error:            Identifier "Hyper" of type int is unknown
Error:            The key type map entry field must be a modifier mask
                  Ignoring illegal assignment in HYPER_LEVEL
 -> 1

(ত্রুটি কোড 1)

এবং এখন আমি আটকে আছি। এই কাজটি কীভাবে করা যায় সে সম্পর্কে কারও কি ধারণা আছে? সমাধান ছাড়াই Hyperঠিক আছে।

সম্পাদন করা

পরিবর্তন করে Superএবং Hyperকরতে Mod4এবং Mod5, যে ত্রুটি দূরে যায়:

~$ xkbcomp custom_3.kbd
( no output )

~$ diff custom_{2,3}.kbd
188,190c188,190
<         interpret Super_L { action = SetMods(modifiers=Super); };
<         interpret Hyper_L { action = SetMods(modifiers=Hyper); };
<     }c;
---
>         interpret Super_L { action = SetMods(modifiers=Mod4); };
>         interpret Hyper_L { action = SetMods(modifiers=Mod5); };
>     };
204c204
<             modifiers= Shift+Hyper;
---
>             modifiers= Shift+Mod5;
206,207c206,207
<             map[Hyper]= Level3;
<             map[Shift+Hyper]= Level3;
---
>             map[Mod5]= Level3;
>             map[Shift+Mod5]= Level3;

তবে এটি এখনও কাজ করে না:

~$ xkbcomp custom_3.kbd $DISPLAY 
Error:            success in unknown
                  Couldn't write keyboard description to :0.0
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  135 (XKEYBOARD)
  Minor opcode of failed request:  9 (XkbSetMap)
  Value in failed request:  0x8010202
  Serial number of failed request:  12
  Current serial number in output stream:  14
 -> 1 

উত্তর:


9

এক্সকেবিতে এখনও কিছু সমস্যা রয়েছে (আমি মনে করি না সম্পর্কযুক্ত), তবে আমার একটি হাইপার মডিফায়ার ম্যাপ করা আছে এবং আমি বিশ্বাস করি যে প্রাসঙ্গিক সেটিংস এগুলি:

compat:

virtual_modifiers Shift,Control,Meta,Super,Hyper,AltGr;

interpret Hyper_R { action = SetMods(modifiers=Mod4); };

প্রতীক:

modifier_map Mod4 { <DELE> }; // Hyper
key <DELE>  { type="UNMODIFIED", [ Hyper_R ], repeat=no  };

তারপর কিছু

key <K_36> { type = "SHIFT+HYPER", [ b, B, 
                                XF86AudioRaiseVolume, XF86AudioRaiseVolume ] };

ধরনের

virtual_modifiers Meta,AltGr,Super,Hyper,Mod5;

আপনি এটি ব্যবহার না করে সেখানে মোড 5 লাগবে না; তবে একইভাবে, শিফট এবং নিয়ন্ত্রণটি এখানে বাদ দিন ...

type "SHIFT+HYPER" {
    modifiers= Shift+Hyper;
    map[Shift]= Level2;
    map[Hyper]= Level3;
    map[Shift+Hyper]= Level4;
};

এটির জন্য মূল্যবান, আমি জ্যামিতি এবং মূল কোডগুলি মূল্যবান বলে তুলনামূলকভাবে পুনরায় সংজ্ঞায়নের চেষ্টা করতে গিয়ে অনেক খারাপ সমস্যায় পড়েছিলাম এবং pc105মূল চিহ্নগুলিতে প্রত্যাবর্তন শেষ করেছি <AE01>, যদিও তাদের বেশিরভাগই হাস্যকরভাবে ভুল-নাম দেওয়া হয়েছে। (যেমন <DELE>আমার হাইপার কী জন্য)

পুনশ্চ. কার্যকারী উদাহরণের জন্য, https://github.com/brpocock/spacey-cadet-keyboard দেখুন ...


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