কীভাবে আমি বর্তমান কীবোর্ড লেআউট পেতে পারি?


61

আমি ভাবছি যে কোনও কমান্ড লাইন সরঞ্জাম আছে, এটি বর্তমান কীবোর্ড লেআউটটি দেয়।

আমি XkbLayoutসেট আছে us, ru।

আপডেট: setxkbmap লেআউট সেটিংস দেয় না, নির্বাচিত বিন্যাসটি দেয় returns উদাহরণ:

$ setxkbmap -print | grep xkb_symbols
xkb_symbols   { include "pc+us+ru:2+inet(evdev)+capslock(grouplock)+terminate(ctrl_alt_bksp)"   };

বর্তমান লেআউটটি যাই হোক না কেন এটি একই ফলাফল প্রত্যাবর্তন করবে।


আমি ডি-বাসে আসলেই ভাল নই, তবে বর্তমান কীবোর্ড লেআউটটি এটি মনে করি এটি অনুসরণ করা সহজ হওয়া উচিত। যদিও সক্রিয় স্যুইচ না থাকলে এটি করতে সক্ষম নাও হতে পারে।
— বেনিয়ামিন

উত্তর:


31

হতে পারে এটি সংস্করণ নির্ভর, তবে আমার মেশিনে setxkbmapনিম্নলিখিত কমান্ডটি 1.3.0 ব্যবহার করে:

setxkbmap -query | grep layout

নোট করুন যে আপনার প্রয়োজনের উপর নির্ভর করে কেবলমাত্র লেআউটটি জানার জন্য এটি বেহুদা হতে পারে: উদাহরণস্বরূপ মার্কিন লেআউটের ডিভোরাক বৈকল্পিক ডিফল্ট কিউওয়ার্টিয়ের চেয়ে বেশ আলাদা। -queryবিকল্প setxkbmapউভয় বিন্যাস এবং বিভিন্ন ক্ষেত্রে যেমন বৈকল্পিক, দেয়:

$ setxkbmap -query
rules:      evdev
model:      default
layout:     fr
variant:    bepo
options:    grp:alt_shift_toggle


আপনি বর্তমান লেআউটগুলি এবং রূপগুলি এবং আরও অনেক অতিরিক্ত তথ্য পানsetxkbmap -print -verbose 10
— এরিক

এটি উভয় লেআউট সেট করতে, উদাহরণস্বরূপ CZ এবং আমাদের, বৈকল্পিক ডিভোরাক (ক 104 চাবি কীবোর্ডের জন্য), ব্যবহার সঙ্গে আধুনিকsetxkbmap -model pc104 -layout cz,us -variant ,dvorak
— এরিক

ধন্যবাদ, কাজ করছেন
— ইন্ডাকোচিয়া ওয়াচান

19

এখানে এক্সকেবি-সুইচ রয়েছে যা বর্ণনা করা হয়েছে:

এক্সকেবি-স্যুইচ একটি সি ++ প্রোগ্রাম যা এক্সকেবি লেআউট স্থিতির অনুসন্ধান এবং পরিবর্তন করতে দেয় allows

https://github.com/ierton/xkb-switch

অথবা, নোজিমিকার পরামর্শ অনুসরণ করে আপনি ব্যবহার করতে পারেন:

setxkbmap -print | awk -F"+" '/xkb_symbols/ {print $2}'

আর্ক লিনাক্স বোর্ডগুলির এই থ্রেড থেকে: https://bbs.archlinux.org/viewtopic.php?pid=539406


1
ধন্যবাদ, ভাল xkb-switchকাজ করে, তবে আমি আশা করি যে আরও বহনযোগ্য সমাধান ছিল
— অ্যান্ড্রু

1
@ অ্যান্ড্রু: হ্যাঁ এটি একজাতীয় বর্তমান লেআউটটি পাওয়ার সহজ কোনও উপায় নেই।
— বেনিয়ামিন

7
তোমার setxkbmapযখন একাধিক বিন্যাস সংজ্ঞায়িত করা হয় বর্তমানে সক্রিয় বিন্যাস দেখায় না।
— টেরডন

13

হ্যাঁ একটি কমান্ড লাইন সরঞ্জাম যা আপনার যা চায় তা করে! আমি ঠিক 10 মিনিট আগে এটি আবিষ্কার করেছি :)

এখানে দেখুন: https://github.com/nonpop/xkblayout-state

xkblayout-state print "%s"

আপনি যা চান ঠিক তা করে (এটি কোনও লাইনের শেষের ফলাফল দেয় না, সুতরাং ; echoআপনার প্রয়োজন হলে যুক্ত করুন )। সাহায্যের জন্য পরামিতি ছাড়াই সরঞ্জামটি চালান।


11

বর্তমান লেআউটের জন্য কোড পেতে এটি ব্যবহার করুন:

$(xset -q|grep LED| awk '{ print $10 }')

এটি আপনার পছন্দ মতো ফর্মে রূপান্তরিত হতে পারে, যেমন:

case "$(xset -q|grep LED| awk '{ print $10 }')" in
  "00000002") KBD="English" ;;
  "00001002") KBD="Thai" ;;
  *) KBD="unknown" ;;
esac

3
00000002যদিও আমার লেআউটটি "ইউএসএ ডিভোরাক আন্তর্জাতিক" হলেও আমি পেয়েছি get ভাষা যথেষ্ট নয় ...
— l0b0

4
তিন বা ততোধিক লেআউট থাকলে এটি সহায়তা করে না। দ্বিতীয় এবং তৃতীয় লেআউটগুলি 00001004আমার মেশিনে একই মান দেয়।
— সস্তানিন

সমস্যা: আপনার নমলকটি টগল করুন এবং এই আদেশটি আবার শুরু করুন;)
— andras.tim

এটি নির্ভরযোগ্যভাবে কাজ করবে না - আপনাকে একটি মুখোশ ব্যবহার করতে হবে যেহেতু LED কীবোর্ডের নেতৃত্বাধীন বোতামগুলির স্থিতিটিও নির্দেশ করে।
— ফিকোভনিক

9

xset -qকমান্ডের আউটপুট স্থির অবস্থানের কারণে আরেকটি সহজ পদ্ধিতি হ'ল:

xset -q | grep -A 0 'LED' | cut -c59-67

এটি মুদ্রণ করে 00000002বা 00001002আপনার বর্তমান কীবোর্ড বিন্যাসের উপর নির্ভর করে।


আমি এটি পছন্দ করি, আপনি মনে করেন আপনি এটি 8 টি অক্ষরে সঙ্কুচিত করতে পারেন। c59-66।
— xlembouras

8

আরও নতুন সিস্টেমে আপনি ব্যবহার করতে পারেন

localectl status

এটি উদাহরণস্বরূপ আপনাকে নিম্নলিখিতগুলি দেখায়:

System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us

3

আপনি xkbprintবর্তমান লেআউটটি মুদ্রণ করতে ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ পিডিএফ ব্যবহার হিসাবে বর্তমান লেআউট মুদ্রণ

xkbprint -color "${DISPLAY}" - |\
    ps2pdf - > current_keyboard_layout.pdf

যা উত্পাদন করে:

এক্সকেবিপ্রিন্ট ফলাফল


2

আর্চ লিনাক্স ফোরামের গুসফ্রাবা থেকে :

setxkbmap -v | awk -F "+" '/symbols/ {print $2}'

এটি এখানে সঠিকভাবে কাজ করে এবং মুদ্রণ করে us(dvorak-intl)(জিনোম কীবোর্ড নির্বাচন মেনুতে "ইউএসএ ডিভোরাক আন্তর্জাতিক" হিসাবে প্রদর্শিত হয়)।


7
এটি তালিকায় তালিকার প্রথম লেআউটটি কেবল মুদ্রণ করে।
— সাস্টানিন

আমি কী কীভাবে আমার কীম্যাপটি সনাক্ত করতে পারি, যখন আমি সেটক্সকোম্যাপ দ্বারা ভাষা টগল ব্যবহার করি? $ setxkbmap -v>> Trying to build keymap using the following components: | keycodes: evdev+aliases(qwerty) | types: complete | compat: complete+ledscroll(group_lock) | symbols: pc+us+hu:2+inet(evdev)+group(alt_shift_toggle)+compose(rwin)+terminate(ctrl_alt_bksp) | geometry: pc(pc105)এই ক্ষেত্রে আমি
— প্রতিবার

2

এখনও পর্যন্ত উত্তরগুলি আমার পক্ষে কার্যকর হয়নি। আমি setkbmapদুটি লেআউট ইংরাজী এবং চেকের সাথে ব্যবহার করি তাই যে কোনও -printবা -queryসর্বদা দুটিকে ফিরিয়ে আনব। এর জন্য LED স্থিতিটি গ্রিপিং করা কার্যকর xset -qহয় না কারণ এটি সমস্ত কীবোর্ডের নেতৃত্বের স্থিতি দেখায়।

এখন পর্যন্ত সবচেয়ে ভালটি ছিল এই ছোট্ট ইউটিলিটিটি দ্রুত লিখে দেওয়া: https://gist.github.com/fikovnik/ef428e82a26774280c4fdf8f96ce8eeb

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <X11/XKBlib.h>
#include <X11/extensions/XKBrules.h>

int main(int argc, char **argv) {
  Display *dpy = XOpenDisplay(NULL);

  if (dpy == NULL) {
    fprintf(stderr, "Cannot open display\n");
    exit(1);
  }

  XkbStateRec state;
  XkbGetState(dpy, XkbUseCoreKbd, &state);

  XkbDescPtr desc = XkbGetKeyboard(dpy, XkbAllComponentsMask, XkbUseCoreKbd);
  char *group = XGetAtomName(dpy, desc->names->groups[state.group]);
  printf("Full name: %s\n", group);

  XkbRF_VarDefsRec vd;
  XkbRF_GetNamesProp(dpy, NULL, &vd);

  char *tok = strtok(vd.layout, ",");

  for (int i = 0; i < state.group; i++) {
    tok = strtok(NULL, ",");
    if (tok == NULL) {
      return 1;
    }
  }

  printf("Layout name: %s\n", tok);

  return 0;
}

এবং ব্যবহার করে সংকলন

gcc -I/usr/include getxkblayout.c -lX11 -lxkbfile


0

আংশিক উত্তর: কে-ডি-তে , আপনি সম্ভবত qdbusকমান্ডের মাধ্যমে বর্তমান কীবোর্ড বিন্যাসটি পেতে পারেন :

$ qdbus org.kde.keyboard /Layouts getCurrentLayout
gb(intl)

আমার বেশ কয়েকটি লেআউট কনফিগার করা আছে তবে এটি বর্তমানে ব্যবহৃত ব্যবহৃত একটিকে প্রদর্শন করে।

কুবুন্টু 18.04 (qdbus সংস্করণ 4.8.7) এ পরীক্ষিত। অ-কিউটি পরিবেশের জন্য অন্যান্য ডি-বাস ভিত্তিক সমাধান থাকতে পারে, তবে আমি তাদের সম্পর্কে জানি না।



-1

তুমি ব্যবহার করতে পার:

setxkbmap -print | grep xkb_symbols

5
এটি সামগ্রিক কীবোর্ড সেটিংস প্রদান করে, বর্তমান লেআউট (আমাদের বা রু) নয়
— এন্ড্রু

@ জেসনওয়ারিয়ান বলেছেন যে এটি ভালভাবে কার্যকর করুন, যদি আপনি সেই লাইনটি সাবধানতার সাথে বিশ্লেষণ করেন তবে এতে আপনার বিন্যাসটি অন্তর্ভুক্ত রয়েছে। আমার ক্ষেত্রে এটি হয় latam।
— nozimica

5
জেসনওয়ারিয়ান সংস্করণ কেবল '+' এর পরে স্ট্রিংয়ের একটি অংশ আউটপুট xkb_symbolsদেয় , মানটি নির্বাচিত বিন্যাসের উপর নির্ভর করে না, আমি সর্বদা 'আমাদের' পাই
— অ্যান্ড্রু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.