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


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.