use of android.hardware.input.KeyboardLayout in project Resurrection_packages_apps_Settings by ResurrectionRemix.
the class KeyboardLayoutPickerFragment method createPreferenceHierarchy.
private PreferenceScreen createPreferenceHierarchy() {
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(getActivity());
Context context = getActivity();
for (KeyboardLayout layout : mKeyboardLayouts) {
CheckBoxPreference pref = new CheckBoxPreference(getPrefContext());
pref.setTitle(layout.getLabel());
pref.setSummary(layout.getCollection());
root.addPreference(pref);
mPreferenceMap.put(pref, layout);
}
return root;
}
use of android.hardware.input.KeyboardLayout in project Resurrection_packages_apps_Settings by ResurrectionRemix.
the class KeyboardLayoutPickerFragment2 method onPreferenceTreeClick.
@Override
public boolean onPreferenceTreeClick(Preference preference) {
KeyboardLayout layout = mPreferenceMap.get(preference);
if (layout != null) {
mIm.setKeyboardLayoutForInputDevice(mInputDeviceIdentifier, mImi, mSubtype, layout.getDescriptor());
getActivity().finish();
return true;
}
return super.onPreferenceTreeClick(preference);
}
use of android.hardware.input.KeyboardLayout in project android_frameworks_base by AOSPA.
the class InputManagerService method getDefaultKeyboardLayout.
private String getDefaultKeyboardLayout(final InputDevice d) {
final Locale systemLocale = mContext.getResources().getConfiguration().locale;
// reasonable default.
if (TextUtils.isEmpty(systemLocale.getLanguage())) {
return null;
}
final List<KeyboardLayout> layouts = new ArrayList<>();
visitAllKeyboardLayouts(new KeyboardLayoutVisitor() {
@Override
public void visitKeyboardLayout(Resources resources, int keyboardLayoutResId, KeyboardLayout layout) {
// means its a custom layout for a specific keyboard.
if (layout.getVendorId() != d.getVendorId() || layout.getProductId() != d.getProductId()) {
return;
}
final LocaleList locales = layout.getLocales();
final int numLocales = locales.size();
for (int localeIndex = 0; localeIndex < numLocales; ++localeIndex) {
if (isCompatibleLocale(systemLocale, locales.get(localeIndex))) {
layouts.add(layout);
break;
}
}
}
});
if (layouts.isEmpty()) {
return null;
}
// First sort so that ones with higher priority are listed at the top
Collections.sort(layouts);
// Next we want to try to find an exact match of language, country and variant.
final int N = layouts.size();
for (int i = 0; i < N; i++) {
KeyboardLayout layout = layouts.get(i);
final LocaleList locales = layout.getLocales();
final int numLocales = locales.size();
for (int localeIndex = 0; localeIndex < numLocales; ++localeIndex) {
final Locale locale = locales.get(localeIndex);
if (locale.getCountry().equals(systemLocale.getCountry()) && locale.getVariant().equals(systemLocale.getVariant())) {
return layout.getDescriptor();
}
}
}
// Then try an exact match of language and country
for (int i = 0; i < N; i++) {
KeyboardLayout layout = layouts.get(i);
final LocaleList locales = layout.getLocales();
final int numLocales = locales.size();
for (int localeIndex = 0; localeIndex < numLocales; ++localeIndex) {
final Locale locale = locales.get(localeIndex);
if (locale.getCountry().equals(systemLocale.getCountry())) {
return layout.getDescriptor();
}
}
}
// Give up and just use the highest priority layout with matching language
return layouts.get(0).getDescriptor();
}
use of android.hardware.input.KeyboardLayout in project android_frameworks_base by AOSPA.
the class InputManagerService method getKeyboardLayoutForInputDevice.
// Binder call
@Override
@Nullable
public KeyboardLayout getKeyboardLayoutForInputDevice(InputDeviceIdentifier identifier, InputMethodInfo imeInfo, InputMethodSubtype imeSubtype) {
InputMethodSubtypeHandle handle = new InputMethodSubtypeHandle(imeInfo, imeSubtype);
String key = getLayoutDescriptor(identifier);
final String keyboardLayoutDescriptor;
synchronized (mDataStore) {
keyboardLayoutDescriptor = mDataStore.getKeyboardLayout(key, handle);
}
if (keyboardLayoutDescriptor == null) {
return null;
}
final KeyboardLayout[] result = new KeyboardLayout[1];
visitKeyboardLayout(keyboardLayoutDescriptor, new KeyboardLayoutVisitor() {
@Override
public void visitKeyboardLayout(Resources resources, int keyboardLayoutResId, KeyboardLayout layout) {
result[0] = layout;
}
});
if (result[0] == null) {
Slog.w(TAG, "Could not get keyboard layout with descriptor '" + keyboardLayoutDescriptor + "'.");
}
return result[0];
}
use of android.hardware.input.KeyboardLayout in project android_frameworks_base by AOSPA.
the class InputManagerService method getKeyboardLayoutOverlay.
// Native callback.
private String[] getKeyboardLayoutOverlay(InputDeviceIdentifier identifier) {
if (!mSystemReady) {
return null;
}
String keyboardLayoutDescriptor = getCurrentKeyboardLayoutForInputDevice(identifier);
if (keyboardLayoutDescriptor == null) {
return null;
}
final String[] result = new String[2];
visitKeyboardLayout(keyboardLayoutDescriptor, new KeyboardLayoutVisitor() {
@Override
public void visitKeyboardLayout(Resources resources, int keyboardLayoutResId, KeyboardLayout layout) {
try {
result[0] = layout.getDescriptor();
result[1] = Streams.readFully(new InputStreamReader(resources.openRawResource(keyboardLayoutResId)));
} catch (IOException ex) {
} catch (NotFoundException ex) {
}
}
});
if (result[0] == null) {
Slog.w(TAG, "Could not get keyboard layout with descriptor '" + keyboardLayoutDescriptor + "'.");
return null;
}
return result;
}
Aggregations