আমি কীভাবে একটি "আইডেম্পোটেন্ট" লিখতে পারি X


14

বর্তমানে আমার কাছে একটি .Xmodmapফাইল রয়েছে যা আমার এতে পরিবর্তন Commandহয় Ctrl, তারপরে আমারটিতে পরিবর্তন Ctrlহয় Super(আমি একটি ম্যাকের উপর লিনাক্স চালাচ্ছি)।

এটি বেশ ভালভাবে কাজ করে, যখন কেবল একবার চালানো হয় তবে একের পর এক রান (উদাহরণস্বরূপ যখন আমি আমার ডেস্কটপ পরিবেশ পুনরায় চালু করি (দারুচিনি) এটি .Xmodmapফাইলটি পুনরায় লোড করে ) এটি মূলত পরিবর্তনগুলি ফিরিয়ে নিয়ে সেটিংসটি পুনরায় সেট করে। কার্যকরভাবে আমার কাঙ্ক্ষিত সেটআপ এবং আসল সেটআপের মধ্যে টগলিং।

আমি কীভাবে .Xmodmapএমন একটি ফাইল লিখতে পারি যা কেবলমাত্র একবারে সেটিংস সেট করে, কিন্তু ক্রমাগত রান করে সেগুলি পরিবর্তন করে না? আমার বিদ্যমান .Xmodmapফাইলটি এখানে :

clear control
clear mod4

keycode 105 =
keycode 206 =

keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Control_R NoSymbol Control_R
keycode 37 = Super_L NoSymbol Super_L

add control = Control_L
add control = Control_R

আমি প্রশ্নটি বুঝতে পারি না। এখানে "মডেল" এর অর্থ কী তা আমার কোনও ধারণা নেই। এটি .Xmodmapকেবল আপনি যে কীগুলি পরিবর্তন করছেন তা প্রভাবিত করে, আপনি অন্যভাবে কী করতে চান?
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

আমি যখন .Xmodmap ব্যবহার করি এটি কীগুলি সেট করে, যদি আমি আবার এটি চালাই তবে এটি তাদের পিছনে স্যুইচ করে। আমি একটি .XModmap তৈরি করতে চাই যা অদলবদল নিয়ন্ত্রণ এবং কমান্ড কীগুলির ফলাফল যাই হোক না কেন। কখনও কখনও পুনরায় আরম্ভ করার সময় ডি। এক্সোডম্যাপটি আবার চালানো হয় ফলে বিরক্তির সৃষ্টি হয়।
কোটায়ার

2
@ কোটায়ার আমার মনে হয় আপনি যে শব্দটির সন্ধান করছেন তা হ'ল " আদর্শবান "
জোসেফ আর

উত্তর:


7

আপনার মোডগুলি প্রয়োগ করার আগে মানচিত্রটিকে তার আসল অবস্থায় পুনরায় সেট করুন। একটি পুরো রিসেট চিরতরে লাগে, তাই আমি সবচেয়ে ভাল হয়ে আসতে পারি f

এই কোডটি ব্যবহার করে .Xmodmap{.orig,.reset,.mods}যেখানে .origঅস্তিত্ব নেই তা এটি বর্তমান অবস্থায় সেট করা আছে এবং .resetযেখানেই গেছে সেখানে থেকে সেই রাষ্ট্রটি পুনরুদ্ধার করার জন্য গণনা করে। আবেদনের আগে .mods

#!/bin/sh
# file xmodmap-reset

#     rm ~/.Xmodmap.orig
# beforehand to take current setup as baseline for Xmodmap.mods changes

stem=~/.Xmodmap
orig=${stem}.orig
reset=${stem}.reset
mods=${stem}.mods

# implement -pme like -pke
#
xmodmap-pme () {
  xmodmap -pm \
  | sed '
        1d
        / [^ ]/!d
        s/^[^ ][^ ]*/clear &\nadd & =/
        s/([^ ]*//g
    '
}

# save baseline if none atm
test -a $orig || {
    xmodmap  -pke
    xmodmap-pme
} > $orig

# payload, diff for commands to reset to baseline from current
{
    xmodmap  -pke
    xmodmap-pme
} \
| {
    diff -u0 $orig - \
    | sed -n '
        1,/^@@/d
        s/^[^+]clear/clear/p
        s/^-//p
      '
} > $reset
xmodmap $reset

# finally ready to apply the mods
test -a $mods && xmodmap $mods

(সম্পাদনা করুন: ক্লিনআপ)


আমি এই চেষ্টা করছি। এ পর্যন্ত সব ঠিকই.
কোটায়র

@ কোটায়ার - এটি কি আপনার জন্য কাজ করছে?
slm

সত্যিই আমি এখনও পরীক্ষা নিরীক্ষা করছি না।
কোটায়র

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

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

0

সিস্টেম> পছন্দসমূহ> প্রারম্ভিক অ্যাপ্লিকেশনগুলিতে যান এবং যুক্ত করুন xmodmap ~/.Xmodmapxmodmap কমান্ড যুক্ত করুন


এটি প্রতিবারই ডিইডি পুনরায় চালু হওয়ার সাথে সাথে xmodmap চালায়, এটি ইতিমধ্যে কাজ করে এবং সেটিংস সেট হয়ে যায়, তারপরে ফিরে সেট করুন। উদাহরণস্বরূপ কম্পিউটার শুরু করুন, লগ ইন করুন, ডিই চালু করা হবে, এক্সমোডম্যাপ চালানো হবে, ডিই ক্র্যাশ হবে, ডিই শুরু হবে, এক্সমোডম্যাপ চালানো হবে। এখন আমার কীবোর্ডটি আবার গণ্ডগোল করেছে।
কোটায়র


0

আপনি যা চান তা নিয়ে আমি এখনও খানিকটা বিভ্রান্ত হয়েছি, তবে আমি এটি মনে করি:

যদি আপনি এটি নিজের মধ্যে রাখেন ~/.Xmodmap,

clear control
clear mod4

keysym Super_L = Control_L
keysym Control_L = Super_L

add control = Control_L
add control = Control_R
add mod4 = Super_L
add mod4 = Super_R

তারপরে প্রতিবার xmodmap ~/.Xmodmapমৃত্যুদন্ড কার্যকর করা হবে, তারপরে বাম Ctrlএবং বাম কী অদলবদল করুন। সুতরাং, প্রথম অনুরোধে, Ctrlকীটি আপনি চাপ দিয়েছিলেন এমনভাবে কাজ করে , তবে দ্বিতীয় অনুরোধে এটি আবার Ctrlকী হিসাবে অভিনয় শুরু করে ।


এটি ঠিক আমি চাই না
কোটায়ার

আমি হুবহু বিপরীতটি চাই, আমি প্রতিটি অনুরোধ চাই, কমান্ডের মতো নিয়ন্ত্রণ ও নিয়ন্ত্রণের মতো আচরণের ফলে কমান্ডের ফলসই হোক না কেন।
কোটায়র

ঠিক আছে, ভাল, এ কারণেই আমি বিভ্রান্ত, কারণ আপনার আসল পোস্টিংটি আপনি যা চান ঠিক
তেমনভাবে

তবে তা হয় না।
কোটায়র

ওয়েল, আচরণ আমি মান্য যে আপনার কোডটি হল হয় idempotent, যেহেতু আমার কোড stateful হয়। আপনি কি আমাকে বলছেন যে আপনার কোড এবং আমার উভয়ই আপনার জন্য অভিন্ন আচরণ করে? যদি এটি হয় তবে আমি মনে করি আপনি অবশ্যই কোনও প্রকারের বাগ ভোগ করছেন। আমার একটি পরামর্শ রয়েছে: xmodmap ~/.Xmodmapএক্সটার্ম থেকে স্পষ্টতভাবে চলার চেষ্টা করুন এবং দেখুন আপনার কোডটি পুনরাবৃত্ত প্রয়োগের সাথে কীগুলি সত্যিই অদলবদল করে কিনা। আপনার চাবিগুলি মূল আচরণে ফিরে আসে যখন দারুচিনি পুনরায় চালু হয় আপনি যে কারণে মনে করেন তা নয়?
বিলিজেএমসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.